草庐IT

开源大语言模型(LLM)汇总(持续更新中)

JarodYv 2023-08-25 原文

开源大语言模型(LLM)汇总

随着ChatGPT的火爆,越来越多人希望在本地运行一个大语言模型。为此我维护了这个开源大语言模型汇总,跟踪每天不发的大语言模型和精调语言模型。

我将根据个模型采用的基础大模型进行分类,每个大模型下列出各派生模型。

文章目录

Alpaca (Stanford)

斯坦福Alpaca:一种指令遵从型 LLaMA 模型。

  • 🏠Alpaca 官网: https://crfm.stanford.edu/2023/03/13/alpaca.html
  • ❤️Alpaca GitHub: https://github.com/tatsu-lab/stanford_alpaca
  • 💵是否可以商用: 否

以下是基于 Stanford Alpaca 项目的衍生模型或类似模型:

  • Alpaca.cpp
  • Alpaca-LoRA
  • Baize
  • Cabrita
  • BELLE
  • Luotuo
  • Vicuna
  • Chinese-Vicuna
  • GPT4All
  • Koala
  • llama.cpp
  • Lit-LLaMA ️

Alpaca.cpp

一个可以在本地设备上快速运行的类ChatGPT模型。视频中演示的模型具有4G权重,运行在M2芯片的Macbook Air上。视频是原始速度,没有加速。

Alpaca-LoRA

该项目使用低秩适应 (LoRA) 重现Stanford Alpaca。

项目提供了一个与 text-davinci-003 质量相似的指令模型,可以在 Raspberry Pi 上运行(用于研究),代码可以很容易地扩展到 13B、30B 和 65B 模型。

Baize

Baize 是一个使用 LoRA 微调的开源聊天模型。 它使用与 ChatGPT 聊天生成的 100k 对话进行训练。 还使用 Alpaca 的数据来提高其性能。 目前已经发布了 7B、13B 和 30B 规模模型。

Cabrita

基于LLaMA的葡萄牙语微调模型

  • ❤️GitHub: https://github.com/22-hours/cabrita

BELLE

BELLE 基于斯坦福的 Alpaca 完成,对中文做了优化,并对生成代码进行了一些修改,模型调优仅使用由 ChatGPT 生产的数据(不包含任何其他数据)。

  • ❤️GitHub: https://github.com/LianjiaTech/BELLE

Luotuo

来自商汤科技和华中科技大学开源中文语言模型骆驼 Luotuo,该项目基于 LLaMA、Stanford Alpaca、Alpaca LoRA、Japanese-Alpaca-LoRA 等完成,单卡就能完成训练部署。

Vicuna (FastChat)

一个达到ChatGPT 90%效果的开源聊天机器人。

Chinese-Vicuna

一个中文低资源的LLaMA + LoRA方案,结构参考Alpaca

GPT4All

基于 LLaMA,用大约 800k GPT-3.5-Turbo 生成数据训练的助手式大语言模型。

Koala

Koala 是一个在 LLaMA 上微调的语言模型。

llama.cpp

用纯C/C++实现的LLaMA模型推理。支持3个模型:LLaMA, AlpacaGPT4All

Lit-LLaMA ️

LLaMA 的独立实现,支持量化、LoRA微调和预训练。在 Apache 2.0 许可下完全开源。 此实现基于 nanoGPT

BLOOM (BigScience)

BigScience 大型开放科学开放存取多语言模型。

以下是基于 BigScience BLOOM 项目的衍生模型或类似模型:

  • BLOOM-LoRA
  • Petals

BLOOM-LoRA

各种指令调优数据集的低秩适应模型。

Petals

使用分布式 176B 参数 BLOOM 或 BLOOMZ 生成文本,并根据您自己的任务对其进行微调。

Flamingo (Google/Deepmind)

使用单一视觉语言模型处理多项任务

以下是基于 Flamingo 项目的衍生模型或类似模型:

  • Flamingo — Pytorch
  • OpenFlamingo

Flamingo — Pytorch

在 Pytorch 中实现 Flamingo。包括感知器重采样器(包括学习查询贡献要注意的键/值的方案,以及媒体嵌入)、专门的掩码交叉注意力块,以及交叉注意力末端的 tanh 门控 + 相应的前馈块。

  • ❤️GitHub: https://github.com/lucidrains/flamingo-pytorch

OpenFlamingo

DeepMind Flamingo 模型的开源版本。提供了用于训练和评估 OpenFlamingo 模型的 PyTorch 实现。还提供了在新的多模态 C4 数据集(即将推出)上训练的初始 OpenFlamingo 9B 模型。

FLAN (Google)

包含用于生成指令调优数据集集合的代码。 第一个是原始的 Flan 2021,记录在 Finetuned Language Models are Zero-Shot Learners 中;第二个是扩展版本,被称为 Flan Collection,记录在 The Flan Collection: Designing Data and Methods for Effective Instruction Tuning 中,用于生成 Flan-T5Flan-PaLM

以下是基于 FLAN 项目的衍生模型或类似模型:

  • Flan-Alpaca
  • Flan-UL2

Flan-Alpaca

来自人类和机器的指令调优。 包含用于将 Stanford Alpaca 合成指令调优扩展到现有指令调优模型(例如 Flan-T5)的代码。 HuggingFace 上提供了预训练模型和演示。

Flan-UL2

Flan-UL2是基于T5架构的编解码器模型。 它使用与去年早些时候发布的 UL2 模型相同的配置。 使用“Flan”提示调整和数据集收集对其进行了微调。

GLM (General Language Model)

GLM 是一种使用自回归填空目标进行预训练的通用语言模型,可以针对各种自然语言理解和生成任务进行微调。

以下是基于 GLM 项目的衍生模型或类似模型:

  • GLM-130B
  • ChatGLM-6B

GLM-130B

GLM-130B是一个开放的双语(英汉)双向密集模型,拥有1300亿个参数,使用通用语言模型(GLM)的算法进行预训练。 它旨在在单台A100(40G * 8)或V100(32G * 8)服务器上用具有130B参数模型进行推理任务。 通过 INT4 量化,硬件要求可以进一步降低到具有 4 * RTX 3090(24G)的单个服务器,而性能几乎没有下降。 截至 2022 年 7 月 3 日,GLM-130B 已经接受了超过 4000 亿个文本标记的训练(中文和英文各 200B)。

ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

GPT-J (EleutherAI)

GPT-J 是 EleutherAI 开发的开源人工智能语言模型。GPT-J 在各种零样本下游任务上的表现与 OpenAI 的 GPT-3 非常相似,甚至在代码生成任务上的表现优于它。

最新版本 GPT-J-6B 是一种基于名为 The Pile 的数据集的语言模型。The Pile 是一个开源的 825 GB 语言建模数据集,分为 22 个较小的数据集。GPT-J 在能力上与 ChatGPT 类似,虽然它不具有聊天机器人的功能,仅作为文本预测器。

  • ❤️GitHub: https://github.com/kingoflolz/mesh-transformer-jax/#gpt-j-6b
  • 💻Demo: https://6b.eleuther.ai/

以下是基于 GPT-J 项目的衍生模型或类似模型:

  • Dolly

Dolly (Databricks)

Databricks 的 Dolly 是一个在 Databricks 机器学习平台上训练的大型语言模型,它基于开源模型 (GPT-J) 在对 50k的重点语料库(Stanford Alpaca)进行仅 30 分钟的微调 ,就表现出令人惊讶的高质量指令遵循行为。 我们认为这一发现很重要,因为它表明创造强大的人工智能技术的能力比以前意识到的要容易得多。

Cerebras-GPT (Cerebras)

一系列开源、高效的大型语言模型。 Cerebras 开源了七个 GPT-3 模型,参数从 1.11 亿到 130 亿。 这些模型使用 Chinchilla 公式进行训练,为准确性和计算效率设定了新的基准。

GPT-NeoX

该项目记录了 EleutherAI 用于在 GPU 上训练大规模语言模型的库。 当前的框架基于 NVIDIA 的 Megatron 语言模型,并通过 DeepSpeed 技术以及一些新颖的优化得到了增强。 目标是使这个项目成为一个可访问的集散地,以收集训练大规模自回归语言模型的技术,并加速对大规模训练的研究。

HuggingGPT

HuggingGPT 是一个协作系统,由作为控制器的 LLM 和作为协作执行者的众多专家模型组成(来自 HuggingFace Hub)。

Polyglot

多语言均衡能力的大型语言模型。 由于对当前多语言模型的非英语性能不满意,Polyglot团队制作了非英语语言性能更高的多语言模型,并将其命名为“Polyglot”。

Pythia

跨时间和尺度解释自回归Transformer

Segment Anything

Segment Anything Model (SAM) 根据输入提示(例如点或框)生成高质量的对象掩码,它可用于为图像中的所有对象生成掩码。 它已经在 1100 万张图像和 11 亿个掩码的数据集上进行了训练,并且在各种分割任务上具有很强的零样本性能。

The RWKV Language Model

RWKV:具有 Transformer 级 LLM 性能的可并行化 RNN(RWKV来自Transformer的4 个主要参数:R W K V)

XGLM

XGLM 模型是 Few-shot Learning with Multilingual Language Models 中提出的模型。

  • ❤️GitHub: https://github.com/facebookresearch/fairseq/tree/main/examples/xglm
  • ❤️Hugging Face: https://huggingface.co/docs/transformers/model_doc/xglm

有关开源大语言模型(LLM)汇总(持续更新中)的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  4. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  5. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  6. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  7. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  8. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  9. ruby-on-rails - 如何将验证与模型分开 - 2

    我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:

  10. ruby-on-rails - Rails 模型——非持久类成员或属性? - 2

    对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs

随机推荐