LargeLanguageModel(LLM)即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。
所谓"语言模型",就是只用来处理语言文字(或者符号体系)的AI模型,发现其中的规律,可以根据提示(prompt),自动生成符合这些规律的内容。
LLM通常基于神经网络模型,使用大规模的语料库进行训练,比如使用互联网上的海量文本数据。这些模型通常拥有数十亿到数万亿个参数,能够处理各种自然语言处理任务,如自然语言生成、文本分类、文本摘要、机器翻译、语音识别等。
本文对国内外公司、科研机构等组织开源的LLM进行了全面的整理。
ChatGLM-6B是一个开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化。该模型基于GeneralLanguageModel(GLM)架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4量化级别下最低只需6GB显存)。
ChatGLM-6B使用了和ChatGLM相同的技术,针对中文问答和对话进行了优化。经过约1T标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62亿参数的ChatGLM-6B虽然规模不及千亿模型,但大大降低了推理成本,提升了效率,并且已经能生成相当符合人类偏好的回答。
MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。
MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。
相比已有的中文开源模型,伶荔模型具有以下优势:
目前公开可用的模型有:
进行中的项目:
Chinese-Vicuna是一个中文低资源的LLaMA+Lora方案。
项目包括
Chinese-LLaMA-Alpaca包含中文LLaMA模型和经过指令微调的Alpaca大型模型。
这些模型在原始LLaMA的基础上,扩展了中文词汇表并使用中文数据进行二次预训练,从而进一步提高了对中文基本语义理解的能力。同时,中文Alpaca模型还进一步利用中文指令数据进行微调,明显提高了模型对指令理解和执行的能力。
ChatYuan是一个支持中英双语的功能型对话语言大模型。ChatYuan-large-v2使用了和v1版本相同的技术方案,在微调数据、人类反馈强化学习、思维链等方面进行了优化。
ChatYuan-large-v2是ChatYuan系列中以轻量化实现高质量效果的模型之一,用户可以在消费级显卡、PC甚至手机上进行推理(INT4最低只需400M)。
华驼(HuaTuo)是基于中文医学知识的LLaMA微调模型。
此项目开源了经过中文医学指令精调/指令微调(Instruct-tuning)的LLaMA-7B模型。通过医学知识图谱和GPT3.5API构建了中文医学指令数据集,并在此基础上对LLaMA进行了指令微调,提高了LLaMA在医疗领域的问答效果。
「鹏程·盘古α」是业界首个2000亿参数以中文为核心的预训练生成语言模型,目前开源了两个版本:鹏程·盘古α和鹏程·盘古α增强版,并支持NPU和GPU两个版本,支持丰富的场景应用,在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出,具备较强的少样本学习的能力。
基于盘古系列大模型提供大模型应用落地技术帮助用户高效的落地超大预训练模型到实际场景。整个框架特点如下:
主要有如下几个核心模块:
鹏程盘古对话生成大模型(PanGu-Dialog)。
PanGu-Dialog是以大数据和大模型为显著特征的大规模开放域对话生成模型,充分利用大规模预训练语言模型的知识和语言能力,构建可控、可靠可信、有智慧的自然人机对话模型。主要特性如下:
“悟道”是双语多模态预训练模型,规模达到1.75万亿参数。项目现有7个开源模型成果。
BBT-2是包含120亿参数的通用大语言模型,在BBT-2的基础上训练出了代码,金融,文生图等专业模型。基于BBT-2的系列模型包括:
BELLE:BeEveryone'sLargeLanguagemodelEngine(开源中文对话大模型)
本项目目标是促进中文对话大模型开源社区的发展,愿景做能帮到每一个人的LLMEngine。现阶段本项目基于一些开源预训练大语言模型(如BLOOM),针对中文做了优化,模型调优仅使用由ChatGPT生产的数据(不包含任何其他数据)。
LLaMA语言模型全称为"LargeLanguageModelMetaAI",是Meta的全新大型语言模型(LLM),这是一个模型系列,根据参数规模进行了划分(分为70亿、130亿、330亿和650亿参数不等)。
其中LaMA-13B(130亿参数的模型)尽管模型参数相比OpenAI的GPT-3(1750亿参数)要少了十几倍,但在性能上反而可以超过GPT-3模型。更小的模型也意味着开发者可以在PC甚至是智能手机等设备上本地运行类ChatGPT这样的AI助手,无需依赖数据中心这样的大规模设施。
StanfordAlpaca(斯坦福Alpaca)是一个指令调优的LLaMA模型,从Meta的大语言模型LLaMA7B微调而来。
StanfordAlpaca让OpenAI的text-davinci-003模型以self-instruct方式生成52K指令遵循(instruction-following)样本,以此作为Alpaca的训练数据。研究团队已将训练数据、生成训练数据的代码和超参数开源,后续还将发布模型权重和训练代码。
Lit-LLaMA是一个基于nanoGPT的LLaMA语言模型的实现,支持量化、LoRA微调、预训练、flashattention、LLaMA-Adapter微调、Int8和GPTQ4bit量化。
主要特点:单一文件实现,没有样板代码;在消费者硬件上或大规模运行;在数值上等同于原始模型。
Lit-LLaMA认为人工智能应该完全开源并成为集体知识的一部分。但原始的LLaMA代码采用GPL许可证,这意味着使用它的任何项目也必须在GPL下发布。这“污染”了其他代码,阻止了与生态系统的集成。Lit-LLaMA永久性地解决了这个问题。
GloVe的全称叫GlobalVectorsforWordRepresentation,它是一个基于全局词频统计(count-based&overallstatistics)的词表征(wordrepresentation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。
Dolly是一个低成本的LLM,Dolly采用EleutherAI现有的60亿参数的开源模型,并对其进行细微的修改,以激发指令跟随能力。
OPT-175B是Meta开源的大语言模型,拥有超过1750亿个参数——和GPT-3相当。相比GPT-3,OPT-175B的优势在于它完全免费。
CerebrasGPT是由Cerebras公司开源的自然语言处理领域的预训练大模型,其模型参数规模最小1.11亿,最大130亿,共7个模型。
与业界的模型相比,Cerebras-GPT几乎是各个方面完全公开,没有任何限制。不管是模型架构,还是预训练结果都是公开的。
Bloom是用于自然语言处理的大语言模型,包含1760亿个参数,支持46种自然语言(包括中文)和13种编程语言,可以用来回答问题、翻译文本、从文件中提取信息片段,还能像GitHubCopilot一样用于生成代码。
BLOOM模型的最大优势是它的易获取性,任何个人或机构都可以从HuggingFace免费获得1760亿个参数的完整模型。用户有多个语种可选,然后将需求输入到BLOOM中,任务类型包括撰写食谱或诗歌、翻译或总结文本,甚至还有代码编程。人工智能开发者可以在该模型的基础上构建他们自己的应用程序。
GPT-J是一个基于GPT-3,由60亿个参数组成的自然语言处理AI模型。
GPT-2是一种基于transformer的大型语言模型,具有15亿个参数,在800万网页数据集上进行训练。
GPT-2能够翻译文本、回答问题、总结段落,并生成文本输出。虽然其输出内容有时与人类相似,但在生成长段落时输出内容可能会变得重复或无意义。
GPT-2是一个通用学习器,没有经过专门训练来执行任何特定的任务,并且是作为OpenAI2018GPT模型的“直接扩展”而创建的,其参数数量和训练数据集的大小均增加了十倍。
RWKV是结合了RNN和Transformer的语言模型,适合长文本,运行速度较快,拟合性能较好,占用显存较少,训练用时较少。
RWKV整体结构依然采用TransformerBlock的思路,相较于原始TransformerBlock的结构,RWKV将self-attention替换为PositionEncoding和TimeMix,将FFN替换为ChannelMix。其余部分与Transfomer一致。
白泽是使用LoRA训练的开源聊天模型,它改进了开源大型语言模型LLaMA,通过使用新生成的聊天语料库对LLaMA进行微调,该模型在单个GPU上运行,使其可供更广泛的研究人员使用。
白泽目前包括四种英语模型:白泽-7B、13B和30B(通用对话模型),以及一个垂直领域的白泽-医疗模型,供研究/非商业用途使用,并计划在未来发布中文的白泽模型。
白泽的数据处理、训练模型、Demo等全部代码已经开源。
CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现,在鹏城实验室“鹏城云脑II”中的192个节点(共1536个国产昇腾910AI处理器)上训练而成。
CodeGeeX有以下特点:
Vicuna模型对LLaMA进行了微调,由加州大学伯克利分校、卡内基梅隆大学、斯坦福大学、加州大学圣地亚哥分校和MBZUAI的学术团队进行微调训练而成,有两种大小可供选择:7B和13B。
Vicuna-13B与StanfordAlpaca等其他开源模型相比展示了具有竞争力的性能。
以GPT-4为评判标准的初步评估显示,Vicuna-13B达到了OpenAIChatGPT和GoogleBard90%以上的质量,同时在90%以上的情况下超过了LLaMA和StanfordAlpaca等其他模型的表现。训练Vicuna-13B成本约为300美元。训练和服务代码,以及在线演示都是公开的,可用于非商业用途。
RedPajama包含三个主要组成部分:预训练数据、基础模型和指令调优数据与模型。
OpenAssistant是一个开源项目,旨在开发免费提供给所有人使用的AI聊天机器人。
训练数据集OpenAssistantConversations包含了超过60万个涉及各种主题的交互,用于训练各种模型。目前发布了经过指令调整的LLaMA13B和30B模型,以及其他使用相同数据集训练的模型。
StableLM项目仓库包含StabilityAI正在进行的StableLM系列语言模型开发,目前StabilityAI发布了初始的StableLM-alpha模型集,具有30亿和70亿参数。150亿和300亿参数的模型正在开发中。
StableLM模型可以生成文本和代码,并为一系列下游应用提供支持。它们展示了小而高效的模型如何在适当的训练下提供高性能。
StarCoder(150亿参数)是HuggingFace联合ServiceNow发布的免费大型语言模型,该模型经过训练主要用途是可以生成代码,目的是为了对抗GitHubCopilot和亚马逊CodeWhisperer等基于AI的编程工具。
SantaCoder是一个语言模型,该模型拥有11亿个参数,可以用于Python、Java和JavaScript这几种编程语言的代码生成和补全建议。
根据官方提供的信息,训练SantaCoder的基础是TheStack(v1.1)数据集,SantaCoder虽然规模相对较小,只有11亿个参数,在参数的绝对数量上低于InCoder(67亿)或CodeGen-multi(27亿),但SantaCoder的表现则是要远好于这些大型多语言模型。
MLCLLM是一种通用解决方案,它允许将任何语言模型本地部署在各种硬件后端和本地应用程序上。
此外,MLCLLM还提供了一个高效的框架,供使用者根据需求进一步优化模型性能。MLCLLM旨在让每个人都能在个人设备上本地开发、优化和部署AI模型,而无需服务器支持,并通过手机和笔记本电脑上的消费级GPU进行加速。
WebLLM是一个可将大型语言模型和基于LLM的聊天机器人引入Web浏览器的项目。一切都在浏览器内运行,无需服务器支持,并使用WebGPU加速。这开辟了许多有趣的机会,可以为每个人构建AI助手,并在享受GPU加速的同时实现隐私。
WizardLM是一个经过微调的7BLLaMA模型。它通过大量具有不同难度的指令跟随对话进行微调。这个模型的新颖之处在于使用了LLM来自动生成训练数据。
WizardLM模型使用一种名为Evol-Instruct(是一种使用LLM代人类自主批生成各种难度等级和技术范围的开放指令,以提高LLM能力的新方法)的新方法,通过70k个计算机生成的指令进行训练,该方法生成具有不同难度级别的指令。
YaLM100B是一个类似GPT的神经网络,用于生成和处理文本。
OpenLLaMA是MetaAI的LLaMA大语言模型的开源复现版本,采用宽松许可证。
仓库包含经过训练的2000亿标记的7BOpenLLaMA模型的公共预览版,并提供了预训练的OpenLLaMA模型的PyTorch和Jax权重,以及评估结果和与原始LLaMA模型的比较。
LangChain是一个用于构建基于大型语言模型(LLM)的应用程序的库。它可以帮助开发者将LLM与其他计算或知识源结合起来,创建更强大的应用程序。
LangChain提供了以下几个主要模块来支持这些应用程序的开发:
JARVIS是用于连接LLM和AI模型的协作系统。该系统由LLM(大语言模型)作为控制器和许多AI模型作为协作执行者(来自HuggingFaceHub)组成。
系统的工作流程包括四个阶段:
SemanticKernel是一种轻量级SDK,可将AI大语言模型(LLM)与传统编程语言集成。
SemanticKernel可扩展编程模型结合了自然语言语义功能、传统代码原生功能和基于嵌入的内存,释放新的潜力并通过AI为应用程序增加价值。
SemanticKernel旨在支持和封装来自最新AI研究的多种设计模式,以便开发人员可以为他们的应用程序注入复杂的技能,如提示链、递归推理、总结、零/少样本学习、上下文记忆、长期记忆、嵌入、语义索引、规划和访问外部知识存储以及内部数据等功能。
LMFlow由香港科技大学统计和机器学习实验室团队发起,致力于建立一个全开放的大模型研究平台,支持有限机器资源下的各类实验,并且在平台上提升现有的数据利用方式和优化算法效率,让平台发展成一个比之前方法更高效的大模型训练系统。
LMFlow的最终目的是帮助每个人都可以用尽量少的资源来训练一个专有领域的、个性化的大模型,以此来推进大模型的研究和应用落地。
LMFlow拥有四大特性:可扩展、轻量级、定制化和完全开源。
基于此,用户可以很快地训练自己的模型并继续进行二次迭代。这些模型不仅限于最近流行的LLaMA,也包括GPT-2、Galactica等模型。
xturing为LLM提供了快速、高效和简单的微调,如LLaMA、GPT-J、GPT-2、OPT、Cerebras-GPT、Galactica等。通过提供一个易于使用的界面,再根据你自己的数据和应用来个性化LLM,xTuring使构建和控制LLM变得简单。整个过程可以在你的电脑内或在你的私有云中完成,确保数据的隐私和安全。
通过xturing,你可以:
Dify是一个易用的LLMOps平台,旨在让更多人可以创建可持续运营的原生AI应用。Dify提供多种类型应用的可视化编排,应用可开箱即用,也能以“后端即服务”的API提供服务。
通过Dify创建的应用包含了:
Dify兼容Langchain,这意味着将逐步支持多种LLMs,目前已支持:
正在开发中的功能:
Flowise是一个开源UI可视化工具,使用以NodeTypescript/Javascript编写的LangchainJS构建自定义LLM流程。
有记忆的会话代理:聊天模型的会话代理,它利用聊天特定提示和缓冲存储器
Jigsaw是微软推出的一种可以提高大型语言模型性能(如GPT-3、Codex等)的新工具。
Jigsaw部署了理解程序语法和语义的后处理技术,然后利用用户反馈来提高未来的性能;该工具旨在使用多模式输入为PythonPandasAPI合成代码。Pandas是数据科学中广泛使用的API,具有数百个用于manipulatingdataframes或具有行和列的表的函数。
目标是使部分审查自动化,以提高使用Codex等大型语言模型进行代码合成的开发人员的生产力。
Jigsaw获取英语查询并使用适当的上下文对其进行预处理,以构建可以馈送到大型语言模型的输入。该模型被视为一个黑盒子,并且Jigsaw已使用GPT-3和Codex进行了评估。这种设计的优势在于它支持即插即用最新和最好的可用型号。
GPTCache是一个用于创建语义缓存以存储来自LLM查询的响应的库。将你的LLMAPI成本削减10倍,将速度提高100倍。
闻达:一个大型语言模型调用平台。目前支持chatGLM-6B、chatRWKV、chatYuan和chatGLM-6B模型下自建知识库查找。
设置和预设功能
预设功能使用
MindSporeMindFormers套件的目标是构建一个大模型训练、推理、部署的全流程开发套件:提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。
MindSporeMindFormers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点:
目前支持的模型列表如下:
CodeasPolicies是一种以机器人为中心的语言模型生成的程序在物理系统上执行的表述。CaP扩展了PaLM-SayCan,使语言模型能够通过通用Python代码的完整表达来完成更复杂的机器人任务。通过CaP,Google建议使用语言模型,通过少量的提示来直接编写机器人代码。实验证明,与直接学习机器人任务和输出自然语言动作相比,CaP输出代码表现更好。CaP允许单一系统执行各种复杂多样的机器人任务,而不需要特定的任务训练。
用于控制机器人的常见方法是用代码对其进行编程,以检测物体、移动执行器的排序命令和反馈回路来指定机器人应如何执行任务。但为每项新任务重新编程的可能很耗时,而且需要领域的专业知识。
ColossalAI是一个具有高效并行化技术的综合大规模模型训练系统。旨在无缝整合不同的并行化技术范式,包括数据并行、管道并行、多张量并行和序列并行。
Colossal-AI的目标是支持人工智能社区以与他们正常编写模型相同的方式编写分布式模型。这使得他们可以专注于开发模型架构,并将分布式训练的问题从开发过程中分离出来。
ColossalAI提供了一组并行训练组件。旨在支持用户编写分布式深度学习模型,就像编写单GPU模型一样。提供友好的工具,只需几行即可启动分布式培训。