组合式增强大型语言模型框架
CALM-pytorch是基于Google Deepmind研究的开源PyTorch实现,旨在通过组合多个专业LLM来增强大型语言模型的能力。该框架支持集成任意数量的增强型模型,提供灵活的连接配置和便捷的训练工具。CALM-pytorch可与多种Transformer架构兼容,包括视觉Transformer,为研究人员和开发者提供了一个强大的平台来探索和扩展LLM的潜力。不仅支持文本处理,还能整合视觉和音频模型,为多模态AI应用开发提供了强大支持。
实现来自Google Deepmind发表的论文<a href="https://arxiv.org/abs/2401.02412">LLM增强LLM:通过组合扩展能力</a>中的CALM
可支持任意数量的增强LLM
$ pip install CALM-pytorch
例如使用x-transformers
import torch from x_transformers import TransformerWrapper, Decoder augment_llm = TransformerWrapper( num_tokens = 20000, max_seq_len = 1024, attn_layers = Decoder( dim = 512, depth = 12, heads = 8 ) ) anchor_llm = TransformerWrapper( num_tokens = 20000, max_seq_len = 1024, attn_layers = Decoder( dim = 512, depth = 2, heads = 8 ) ) # 导入CALM包装器 from CALM_pytorch import CALM, AugmentParams calm = CALM( anchor_llm, augment_llms = AugmentParams( model = augment_llm, connect_every_num_layers = 4 ) ) # 模拟输入 seq = torch.randint(0, 20000, (1, 1024)) mask = torch.ones((1, 1024)).bool() prompt = torch.randint(0, 20000, (1, 256)) # 前向传播计算微调损失 loss = calm( seq, mask = mask, prompt = prompt ) loss.backward() # 经过大量训练后,对组合模型进行提示 generated = calm.generate( prompt = seq[:, :1], seq_len = 1024 )
要使用基于🤗 Accelerate的方便的训练器类,只需导入FineTuner
并按如下方式使用
trainer = FineTuner( calm = calm, dataset = dataset, # 返回一个包含calm输入kwargs的字典 - dict(seq: Tensor, mask: Tensor, prompt: Tensor)。它也可以返回一个元组,此时需要将data_kwargs设置为正确的有序kwarg名称值 batch_size = 16, num_train_steps = 10000, learning_rate = 3e-4, weight_decay = 1e-2, warmup_steps = 1000, checkpoint_every = 1000 ) trainer() # 每1000步会将交叉注意力参数的检查点保存到./checkpoints
要探索多个增强LLM,只需为augment_llm
传入一个列表
例如:
calm = CALM( anchor_llm = anchor_llm, augment_llm = [AugmentParams(augment_llm1), AugmentParams(augment_llm2)] # 传入一个包含AugmentParams的列表,包装模型和特定于该变压器的其他超参数 )
如果你想探索锚模型和增强模型之间不同类型的连接,只需将连接作为整数对的元组元组传入,指定锚到增强层的编号。
calm = CALM( anchor_llm = anchor_llm, augment_llms = ( AugmentParams( model = augment_llm1, connections = ( (1, 12), # augment llm1的第1层被anchor llm的第12层关注 (2, 12), (3, 12), (4, 12), ), ), AugmentParams( model = augment_llm2, connections = ( (6, 1), # augment llm2的第6层被anchor llm的第1层关注 (6, 2), (12, 12), ) ) ) )
带有2个专门的增强LLM和一个视觉变压器的CALM设置
import torch # pip install vit-pytorch x-transformers from vit_pytorch.vit import ViT, Attention from x_transformers import TransformerWrapper, Encoder, Decoder anchor_llm = TransformerWrapper( num_tokens = 20000, max_seq_len = 1024, attn_layers = Decoder( dim = 16, dim_head = 2, depth = 12, heads = 8 ) ) augment_llm1 = TransformerWrapper( num_tokens = 20000, max_seq_len = 1024, attn_layers = Encoder( dim = 16, dim_head = 2, depth = 12, heads = 8 ) ) augment_llm2 = TransformerWrapper( num_tokens = 20000, max_seq_len = 1024, attn_layers = Encoder( dim = 16, dim_head = 2, depth = 12, heads = 8 ) ) vit = ViT( image_size = 256, patch_size = 32, num_classes = 1000, dim = 256, depth = 6, heads = 16, mlp_dim = 2048 ) # calm from CALM_pytorch import CALM, AugmentParams, FineTuner calm = CALM( anchor_llm = anchor_llm, augment_llms = ( AugmentParams( model = augment_llm1, mask_kwarg = 'mask' ), AugmentParams( model = augment_llm2, mask_kwarg = 'mask' ), AugmentParams( model = vit, input_shape = (3, 256, 256), hidden_position = 'input', extract_blocks_fn = lambda vit: [m for m in vit.modules() if isinstance(m, Attention)] ) ), attn_kwargs = dict( linear_project_context = True, pre_rmsnorm = True, flash = True ) ) seq = torch.randint(0, 20000, (1, 1024)) mask = torch.ones((1, 1024)).bool() prompt = ( torch.randint(0, 20000, (1, 256)), torch.randint(0, 20000, (1, 256)), torch.randn(1, 3, 256, 256) ) loss = calm( seq, mask = mask, prompt = prompt ) loss.backward() ## 待办事项 - [x] 找出如何正确掩蔽增强语言模型的标记 - [x] 使用虚拟输入自动推导模型维度 - [x] 处理微调训练逻辑 - [x] 展示2个或更多注意力网络之间自定义连接的示例 - [x] 如果直接传入锚定和增强变换器块模块(无需提取函数),通过两个网络运行虚拟输入,并使用钩子正确排序它们 - [x] 修复x-transformers的示例,因为在x-transformers中,深度实际上是 深度的2倍,从注意力和前馈网络之后获取隐藏状态 - [x] 在精细指定隐藏位置时,如果传入的变换器块本身未排序,请确保重新排序 - [x] 扩展到多个增强语言模型列表 - [x] 完整的连接自定义 - [x] 每个增强语言模型的自定义增强层数 - [x] 使简单的视觉变换器工作 - [x] 重构,使提取函数、掩码关键字参数和其他相关超参数分组在{[augment_llm_name]: {augment_llm_related_hparams}}的字典下 - 使用数据类 - [x] 展示示例 - [x] 处理采样时缓存增强隐藏状态。暂时忽略锚定KV缓存 - [x] 用于推理时不释放记录器保存的输出的逻辑 - [x] 管理交叉注意力块状态,以从记录器中弹出保存的输出 - [x] 将增强前向传播移到一个共享方法中,并为锚定制定采样方法 - [ ] 能够仅使用模块名称进行连接 - [ ] 展示一个示例,使用<a href="https://github.com/lucidrains/audiolm-pytorch">hubert或wav2vec</a>包装器赋予语言模型听力能力 - [ ] 处理一个包装器或函数,该函数接受序列和提示长度,并自动推导CALM的输入 - [ ] 添加一个选项,用于自注意力路径,其中记忆标记关注所有增强语言模型的隐藏状态,类似于<a href="https://github.com/lucidrains/zorro-pytorch">Zorro</a>中的做法 ## 引用 ```bibtex @inproceedings{Bansal2024LLMAL, title = {LLM Augmented LLMs: Expanding Capabilities through Composition}, author = {Rachit Bansal and Bidisha Samanta and Siddharth Dalmia and Nitish Gupta and Shikhar Vashishth and Sriram Ganapathy and Abhishek Bapna and Prateek Jain and Partha Pratim Talukdar}, year = {2024}, url = {https://api.semanticscholar.org/CorpusID:266755751} }
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
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 的技术优势。