基于离散序列建模的多模态语言模型
AnyGPT是一款基于离散序列建模的多模态语言模型,能够统一处理语音、文本、图像和音乐等多种模态。该模型通过将不同模态数据转换为统一的离散表示,实现了模态间的转换和自由对话。AnyGPT包含基础模型和聊天模型两个版本,前者实现了四种模态的对齐,后者基于AnyInstruct数据集训练,支持灵活的多模态交互。
<a href='https://junzhan2000.github.io/AnyGPT.github.io/'><img src='https://img.shields.io/badge/项目-主页-绿色'>``</a>
<a href='https://arxiv.org/pdf/2402.12226.pdf'><img src='https://img.shields.io/badge/论文-Arxiv-红色'>``</a>
我们推出了AnyGPT,这是一个任意模态间转换的多模态语言模型,它利用离散表示统一处理语音、文本、图像和音乐等各种模态。基础模型对这四种模态进行对齐,实现不同模态与文本之间的相互转换。此外,我们基于各种生成模型构建了AnyInstruct数据集,其中包含任意模态间转换的指令。在该数据集上训练后,我们的对话模型能够进行自由的多模态对话,可以随意插入多模态数据。
AnyGPT提出了一种生成式训练方案,将所有模态数据转换为统一的离散表示,使用下一个标记预测任务在大语言模型(LLM)上进行统一训练。从"压缩即智能"的角度来看:当分词器的质量足够高,且LLM的困惑度(PPL)足够低时,就有可能将互联网上大量的多模态数据压缩到同一个模型中,从而产生纯文本LLM所不具备的能力。 演示示例可在项目主页查看。
git clone https://github.com/OpenMOSS/AnyGPT.git cd AnyGPT conda create --name AnyGPT python=3.9 conda activate AnyGPT pip install -r requirements.txt
SpeechTokenizer用于语音的分词和重构,Soundstorm负责补全副语言信息,SEED-tokenizer用于图像分词。
用于重构图像的unCLIP SD-UNet模型权重和用于音乐分词和重构的Encodec-32k模型权重将自动下载。
python anygpt/src/infer/cli_infer_base_model.py \ --model-name-or-path "path/to/AnyGPT-7B-base" \ --image-tokenizer-path 'path/to/model' \ --speech-tokenizer-path "path/to/model" \ --speech-tokenizer-config "path/to/config" \ --soundstorm-path "path/to/model" \ --output-dir "infer_output/base"
例如
python anygpt/src/infer/cli_infer_base_model.py \ --model-name-or-path models/anygpt/base \ --image-tokenizer-path models/seed-tokenizer-2/seed_quantizer.pt \ --speech-tokenizer-path models/speechtokenizer/ckpt.dev \ --speech-tokenizer-config models/speechtokenizer/config.json \ --soundstorm-path models/soundstorm/speechtokenizer_soundstorm_mls.pt \ --output-dir "infer_output/base"
基础模型可以执行各种任务,包括文本生成图像、图像描述、自动语音识别(ASR)、零样本文本转语音(TTS)、文本生成音乐和音乐描述。
我们可以按照特定的指令格式进行推理。
text|image|{caption}
text|image|一个繁忙的中世纪集市场景,摊贩在五颜六色的帐篷下售卖奇异商品
image|text|{caption}
image|text|static/infer/image/cat.jpg
text|speech|{speech content}
text|speech|我可以被囚 禁在果壳之中,却仍自以为是无限宇宙之王。
text|speech|{speech content}|{voice prompt}
text|speech|我可以被囚禁在果壳之中,却仍自以为是无限宇宙之王。|static/infer/speech/voice_prompt3.wav
speech|text|{speech file path}
speech|text|AnyGPT/static/infer/speech/voice_prompt2.wav
text|music|{caption}
text|music|具有独立摇滚风格,带有独特元素,营造梦幻、舒缓的氛围
music|text|{music file path}
music|text|static/infer/music/features an indie rock sound with distinct element.wav
注意事项
对于不同的任务,我们使用了不同的语言模型解码策略。图像、语音和音乐生成的解码配置文件分别位于config/image_generate_config.json
、config/speech_generate_config.json
和config/music_generate_config.json
中。其他模态到文本的解码配置文件位于config/text_generate_config.json
中。你可以直接修改或添加参数来改变解码策略。
由于数据和训练资源的限制,模型的生成可能仍不稳定。你可以多次生成或尝试不同的解码策略。
语音和音乐响应将保存为.wav
文件,图像响应将保存为jpg
文件。文件名将是提示和时间的组合。这些文件的路径将在响应中指明。
python anygpt/src/infer/cli_infer_chat_model.py \ --model-name-or-path 'path/to/model' \ --image-tokenizer-path 'path/to/model' \ --speech-tokenizer-path 'path/to/model' \ --speech-tokenizer-config 'path/to/config' \ --soundstorm-path 'path/to/model' \ --output-dir "infer_output/chat"
例如
python anygpt/src/infer/cli_infer_chat_model.py \ --model-name-or-path models/anygpt/chat \ --image-tokenizer-path models/seed-tokenizer-2/seed_quantizer.pt \ --speech-tokenizer-path models/speechtokenizer/ckpt.dev \ --speech-tokenizer-config models/speechtokenizer/config.json \ --soundstorm-path models/soundstorm/speechtokenizer_soundstorm_mls.pt \ --output-dir "infer_output/chat"
指令格式
interleaved|{文本指令}|{模态}|{图像路径}|{语音提示}|{语音指令}|{音乐路径}
其中 文本指令
是输入的文本命令,语音指令
是输入的语音命令;只需要指定其中一个。
图像路径
和 音乐路径
分别是输入图像和音乐的路径。语音提示
是指定模型回复的语气;如果不指定,则使用随机语气。
模态
指的是输出模态的类型,可以选择为语音、图像或音乐;否则被视为文本。这只会影响模型使用config目录下的哪个解码配置文件(这是因为模型的训练受限,导致不同模态的解码策略不同)。也可以逐个token解码,在生成模态的起始token时修改解码策略为对应模态。
示例
要清除对话历史,请输入 |clear
请参考 scripts/stage1_pretrain.sh
和 scripts/stage2_sft.sh
我们提供了训练数据样本以供参考。训练格式的组织包括data/pretrain中的预训练数据和data/instruction中的指令数据。 对于不同任务的提示,请参考task_prompts,如纯文本对话、语音命令文本回复、文本命令语音回复,以及各种任务的特殊提示。您需要根据任务模板提前将多模态数据处理成多轮对话格式。 我们在命令数据中以语音对话为例,对应使用"Speech-Instruction"和"Speech-Response"中的task_prompts:
[ { "role": "user", "message": "<sosp><🗣️1><🗣️1><🗣️1><eosp> 请确认用户的语音输入,创建一个文本回复" }, { "role": "assistant", "message": "<-Ins-> 你好,你好吗\n <-Res-> 我很好,谢谢 <sosp><🗣️2><🗣️2><🗣️2><eosp>" } ]
如果您在研究或应用中发现AnyGPT和AnyInstruct有用,请kindly引用:
@article{zhan2024anygpt,
title={AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling},
author={Zhan, Jun and Dai, Junqi and Ye, Jiasheng and Zhou, Yunhua and Zhang, Dong and Liu, Zhigeng and Zhang, Xin and Yuan, Ruibin and Zhang, Ge and Li, Linyang and others},
journal={arXiv preprint arXiv:2402.12226},
year={2024}
}
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞 绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更 轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号