LitGPT - 20多个高性能LLM,具有预训练、微调和大规模部署的recipes

文章目录

    • 一、关于 LitGPT
    • 二、快速启动
      • 安装LitGPT
        • 高级安装选项
      • 从20多个LLM中进行选择
    • 三、工作流程
      • 1、所有工作流程
      • 2、微调LLM
      • 3、部署LLM
      • 4、评估LLM
      • 5、测试LLM
      • 6、预训练LLM
      • 7、继续预训练LLM
    • 四、最先进的功能
    • 五、训练方法
      • 示例
    • 六、项目亮点
    • 教程


一、关于 LitGPT

LitGPT 用于 使用、微调、预训练和部署LLM Lightning快速⚡⚡

每个LLM都是从头开始实现的,没有抽象和完全控制,使它们在企业规模上非常快速、最小化和高性能。

  • github : https://github.com/Lightning-AI/litgpt
  • 快速启动•模型•Finetune•部署•所有工作流程•功能•配方(YAML)•闪电AI•教程

✅**企业就绪-**Apache 2.0可无限企业使用。

✅**开发人员友好-**无需抽象层和单个文件实现即可轻松调试。

✅**优化性能-**旨在最大化性能、降低成本和加快训练速度的模型。

✅**经过验证的配方-**在企业规模测试的高度优化的训练/微调配方。

✅ From scratch implementations     ✅ No abstractions    ✅ Beginner friendly   
✅ Flash attention                  ✅ FSDP               ✅ LoRA, QLoRA, Adapter
✅ Reduce GPU memory (fp4/8/16/32)  ✅ 1-1000+ GPUs/TPUs  ✅ 20+ LLMs            

二、快速启动

安装LitGPT

pip install 'litgpt[all]'

加载和使用20+LLM中的任何一个:

from litgpt import LLM

llm = LLM.load("microsoft/phi-2")
text = llm.generate("Fix the spelling: Every fall, the familly goes to the mountains.")
print(text)
# Corrected Sentence: Every fall, the family goes to the mountains.       

✅针对快速推理进行了优化
✅量化
✅在低内存GPU上运行
✅没有内部抽象层
✅针对生产规模进行了优化


高级安装选项

从源代码安装:

git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e '.[all]'

探索完整的Python API文档。


从20多个LLM中进行选择

每个模型都是从头开始编写的,以最大限度地提高性能并删除抽象层:

ModelModel sizeAuthorReference
Llama 3, 3.1, 3.21B, 3B, 8B, 70B, 405BMeta AIMeta AI 2024
Code Llama7B, 13B, 34B, 70BMeta AIRozière et al. 2023
Mixtral MoE8x7B, 8x22BMistral AIMistral AI 2023
Mistral7B, 123BMistral AIMistral AI 2023
CodeGemma7BGoogleGoogle Team, Google Deepmind
Gemma 22B, 9B, 27BGoogleGoogle Team, Google Deepmind
Phi 3 & 3.53.8BMicrosoftAbdin et al. 2024

三、工作流程

Finetune•预训练•持续预训练•评估•部署•测试

使用命令行界面运行高级工作流,例如对您自己的数据进行预训练或微调。


1、所有工作流程

安装LitGPT后,选择要运行的模型和工作流程(微调、预训练、评估、部署等…):

# ligpt [action] [model]
litgpt  serve     meta-llama/Llama-3.2-3B-Instruct
litgpt  finetune  meta-llama/Llama-3.2-3B-Instruct
litgpt  pretrain  meta-llama/Llama-3.2-3B-Instruct
litgpt  chat      meta-llama/Llama-3.2-3B-Instruct
litgpt  evaluate  meta-llama/Llama-3.2-3B-Instruct


2、微调LLM

Run on Studios : https://lightning.ai/lightning-ai/studios/litgpt-finetune

微调是采用预训练的AI模型并在为特定任务或应用程序量身定制的较小、专门的数据集上进一步训练它的过程。

# 0) setup your dataset
curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json

# 1) Finetune a model (auto downloads weights)
litgpt finetune microsoft/phi-2 \
  --data JSON \
  --data.json_path my_custom_dataset.json \
  --data.val_split_fraction 0.1 \
  --out_dir out/custom-model

# 2) Test the model
litgpt chat out/custom-model/final

# 3) Deploy the model
litgpt serve out/custom-model/final

阅读完整的微调文档



3、部署LLM

Deploy on Studios : https://lightning.ai/lightning-ai/studios/litgpt-serve

部署预训练或微调LLM以在实际应用程序中使用它。部署,自动设置可由网站或应用程序访问的Web服务器。

# deploy an out-of-the-box LLM
litgpt serve microsoft/phi-2

# deploy your own trained model
litgpt serve path/to/microsoft/phi-2/checkpoint

向查询服务器显示代码:

在单独的终端中测试服务器并将模型API集成到您的AI产品中:

# 3) Use the server (in a separate Python session)
import requests, json
response = requests.post(
    "http://127.0.0.1:8000/predict",
    json={"prompt": "Fix typos in the following sentence: Exampel input"}
)
print(response.json()["output"])

阅读完整的部署文档。



4、评估LLM

评估一个LLM来测试它在各种任务上的表现,看看它理解和生成文本的程度。简单地说,我们可以评估它在大学水平的化学、编码等方面的表现…(MMLU、真实质量保证等…)

litgpt evaluate microsoft/phi-2 --tasks 'truthfulqa_mc2,mmlu'

阅读完整的评估文档。



5、测试LLM

Run on Studios : <https://lightning.ai/lightning-ai/studios/litgpt-chat)

通过交互式聊天测试模型的工作情况。使用chat命令聊天、提取嵌入等…

这是一个展示如何使用Phi-2 LLM的示例:

litgpt chat microsoft/phi-2

>> Prompt: What do Llamas eat?

完整代码:

# 1) List all supported LLMs
litgpt download list

# 2) Use a model (auto downloads weights)
litgpt chat microsoft/phi-2

>> Prompt: What do Llamas eat?

某些型号的下载需要额外的访问令牌。您可以在下载文档中信息。

阅读完整的聊天文档。



6、预训练LLM

Run on Studios : https://lightning.ai/lightning-ai/studios/litgpt-pretrain

预训练是在针对特定任务进行微调之前通过将AI模型暴露于大量数据来教授AI模型的过程。


显示代码:

mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt

# 1) Download a tokenizer
litgpt download EleutherAI/pythia-160m \
  --tokenizer_only True

# 2) Pretrain the model
litgpt pretrain EleutherAI/pythia-160m \
  --tokenizer_dir EleutherAI/pythia-160m \
  --data TextFiles \
  --data.train_data_path "custom_texts/" \
  --train.max_tokens 10_000_000 \
  --out_dir out/custom-model

# 3) Test the model
litgpt chat out/custom-model/final

阅读完整的预训练文档



7、继续预训练LLM

Run on Studios : <https://lightning.ai/lightning-ai/studios/litgpt-continue-pretraining)

继续预训练是另一种微调方式,它通过对自定义数据进行训练来专门化已经预训练的模型:


显示代码:

mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt

# 1) Continue pretraining a model (auto downloads weights)
litgpt pretrain EleutherAI/pythia-160m \
  --tokenizer_dir EleutherAI/pythia-160m \
  --initial_checkpoint_dir EleutherAI/pythia-160m \
  --data TextFiles \
  --data.train_data_path "custom_texts/" \
  --train.max_tokens 10_000_000 \
  --out_dir out/custom-model

# 2) Test the model
litgpt chat out/custom-model/final

阅读完整的持续预训练文档


四、最先进的功能

✅最先进的优化:闪存注意力v2、通过完全分片数据并行支持多GPU、可选CPU卸载以及TPU和XLA支持。

✅预训练、微调和部署

✅通过低精度设置降低计算要求:FP16、BF16和FP16/FP32混合。

✅通过量化降低内存需求:4位浮点数、8位整数和双重量化。

✅配置文件具有出色的开箱即用性能。

✅参数高效微调:LoRA、QLoRA、Adapter和Adapter v2。

✅导出到其他流行的模型重量格式。

✅许多流行的数据集用于预训练和微调,并支持自定义数据集。

✅可读且易于修改的代码,以试验最新的研究思想。


五、训练方法

LitGPT带有经过验证的配方(YAML配置)来训练不同条件下的模型。我们根据我们发现的在不同训练条件下表现最佳的参数生成了这些食谱。

浏览所有训练食谱在这里。


示例

litgpt finetune \
  --config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml

✅使用配置自定义训练

配置可让您自定义所有粒度参数的训练,例如:

# The path to the base model's checkpoint directory to load for finetuning. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir: checkpoints/meta-llama/Llama-2-7b-hf

# Directory in which to save checkpoints and logs. (type: <class 'Path'>, default: out/lora)
out_dir: out/finetune/qlora-llama2-7b

# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision: bf16-true

...

✅示例:LoRA微调配置

# The path to the base model's checkpoint directory to load for finetuning. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir: checkpoints/meta-llama/Llama-2-7b-hf

# Directory in which to save checkpoints and logs. (type: <class 'Path'>, default: out/lora)
out_dir: out/finetune/qlora-llama2-7b

# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision: bf16-true

# If set, quantize the model with this algorithm. See ``tutorials/quantize.md`` for more information. (type: Optional[Literal['nf4', 'nf4-dq', 'fp4', 'fp4-dq', 'int8-training']], default: null)
quantize: bnb.nf4

# How many devices/GPUs to use. (type: Union[int, str], default: 1)
devices: 1

# How many nodes to use. (type: int, default: 1)
num_nodes: 1

# The LoRA rank. (type: int, default: 8)
lora_r: 32

# The LoRA alpha. (type: int, default: 16)
lora_alpha: 16

# The LoRA dropout value. (type: float, default: 0.05)
lora_dropout: 0.05

# Whether to apply LoRA to the query weights in attention. (type: bool, default: True)
lora_query: true

# Whether to apply LoRA to the key weights in attention. (type: bool, default: False)
lora_key: false

# Whether to apply LoRA to the value weights in attention. (type: bool, default: True)
lora_value: true

# Whether to apply LoRA to the output projection in the attention block. (type: bool, default: False)
lora_projection: false

# Whether to apply LoRA to the weights of the MLP in the attention block. (type: bool, default: False)
lora_mlp: false

# Whether to apply LoRA to output head in GPT. (type: bool, default: False)
lora_head: false

# Data-related arguments. If not provided, the default is ``litgpt.data.Alpaca``.
data:
  class_path: litgpt.data.Alpaca2k
  init_args:
    mask_prompt: false
    val_split_fraction: 0.05
    prompt_style: alpaca
    ignore_index: -100
    seed: 42
    num_workers: 4
    download_dir: data/alpaca2k

# Training-related arguments. See ``litgpt.args.TrainArgs`` for details
train:

  # Number of optimizer steps between saving checkpoints (type: Optional[int], default: 1000)
  save_interval: 200

  # Number of iterations between logging calls (type: int, default: 1)
  log_interval: 1

  # Number of samples between optimizer steps across data-parallel ranks (type: int, default: 128)
  global_batch_size: 8

  # Number of samples per data-parallel rank (type: int, default: 4)
  micro_batch_size: 2

  # Number of iterations with learning rate warmup active (type: int, default: 100)
  lr_warmup_steps: 10

  # Number of epochs to train on (type: Optional[int], default: 5)
  epochs: 4

  # Total number of tokens to train on (type: Optional[int], default: null)
  max_tokens:

  # Limits the number of optimizer steps to run (type: Optional[int], default: null)
  max_steps:

  # Limits the length of samples (type: Optional[int], default: null)
  max_seq_length: 512

  # Whether to tie the embedding weights with the language modeling head weights (type: Optional[bool], default: null)
  tie_embeddings:

  #   (type: float, default: 0.0003)
  learning_rate: 0.0002

  #   (type: float, default: 0.02)
  weight_decay: 0.0

  #   (type: float, default: 0.9)
  beta1: 0.9

  #   (type: float, default: 0.95)
  beta2: 0.95

  #   (type: Optional[float], default: null)
  max_norm:

  #   (type: float, default: 6e-05)
  min_lr: 6.0e-05

# Evaluation-related arguments. See ``litgpt.args.EvalArgs`` for details
eval:

  # Number of optimizer steps between evaluation calls (type: int, default: 100)
  interval: 100

  # Number of tokens to generate (type: Optional[int], default: 100)
  max_new_tokens: 100

  # Number of iterations (type: int, default: 100)
  max_iters: 100

# The name of the logger to send metrics to. (type: Literal['wandb', 'tensorboard', 'csv'], default: csv)
logger_name: csv

# The random seed to use for reproducibility. (type: int, default: 1337)
seed: 1337

✅覆盖CLI中的任何参数:

litgpt finetune \
  --config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml \
  --lora_r 4

六、项目亮点

LitGPT为许多伟大的AI项目、计划、挑战,当然还有企业提供支持。请提交拉取请求以考虑某个功能。

  • 📊SAMBA:用于高效无限上下文语言建模的简单混合状态空间模型
    微软研究人员的Samba项目建立在LitGPT代码库之上,将状态空间模型与滑动窗口注意力相结合,优于纯状态空间模型。
  • 🏆NeurIPS 2023大型语言模型效率挑战:1个LLM+1个GPU+1天
    LitGPT存储库是NeurIPS 2023 LLM效率挑战赛的官方入门套件,该比赛的重点是在单个GPU上微调现有的非指令调整LLM 24小时。
  • 🦙TinyLlama:一个开源的小语言模型
    LitGPT支持TinyLlama项目和TinyLlama:开源小语言模型研究论文。
  • 🍪MicroLlama:MicroLlama-300M
    MicroLlama是在TinyLlama和LitGPT支持的50Btoken 上预训练的300M骆驼模型。
  • 🔬预训练较少token 的小型基本LM

研究论文“预训练具有更少令牌的小型基本LM”利用LitGPT,通过从较大模型继承一些转换器块并对较大模型使用的一小部分数据进行训练来开发较小的基本语言模型。它证明,尽管使用的训练数据和资源明显较少,但这些较小的模型可以与较大的模型相比。


教程

🚀开始
⚡微调,包括LoRA、QLoRA和适配器
🤖预训练
💬模型评估
📘支持和自定义数据集
🧹量化
🤯处理内存不足(OOM)错误的提示
🧑🏽‍💻使用云TPU


2025-01-27(一)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/962235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WGCLOUD服务器资源监控软件使用笔记 - Token is error是什么错误

[wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:90: 主机监控信息上报server开始 [wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:99: 主机监控信息上报server返回信息: {"result":"Token is error"} 这个错误是因为agent配置的wgToken和serv…

MySQL(表空间)

​开始前先打开此图配合食用 MySQL表空间| ProcessOn免费在线作图,在线流程图,在线思维导图 InnoDB 空间文件中的页面管理 后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都…

白嫖DeepSeek:一分钟完成本地部署AI

1. 必备软件 LM-Studio 大模型客户端DeepSeek-R1 模型文件 LM-Studio 是一个支持众多流行模型的AI客户端&#xff0c;DeepSeek是最新流行的堪比GPT-o1的开源AI大模型。 2. 下载软件和模型文件 2.1 下载LM-Studio 官方网址&#xff1a;https://lmstudio.ai 打开官网&#x…

知识管理平台在数字经济时代推动企业智慧决策与知识赋能的路径分析

内容概要 在数字经济时代&#xff0c;知识管理平台被视为企业智慧决策与知识赋能的关键工具。其核心作用在于通过高效地整合、存储和分发企业内部的知识资源&#xff0c;促进信息的透明化与便捷化&#xff0c;使得决策者能够在瞬息万变的市场环境中迅速获取所需信息。这不仅提…

关于MySQL InnoDB存储引擎的一些认识

文章目录 一、存储引擎1.MySQL中执行一条SQL语句的过程是怎样的&#xff1f;1.1 MySQL的存储引擎有哪些&#xff1f;1.2 MyIsam和InnoDB有什么区别&#xff1f; 2.MySQL表的结构是什么&#xff1f;2.1 行结构是什么样呢&#xff1f;2.1.1 NULL列表&#xff1f;2.1.2 char和varc…

【开源免费】基于SpringBoot+Vue.JS公交线路查询系统(JAVA毕业设计)

本文项目编号 T 164 &#xff0c;文末自助获取源码 \color{red}{T164&#xff0c;文末自助获取源码} T164&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

【Unity3D】实现横版2D游戏角色二段跳、蹬墙跳、扶墙下滑

目录 一、二段跳、蹬墙跳 二、扶墙下滑 一、二段跳、蹬墙跳 GitHub - prime31/CharacterController2D 下载工程后直接打开demo场景&#xff1a;DemoScene&#xff08;Unity 2019.4.0f1项目环境&#xff09; Player物体上的CharacterController2D&#xff0c;Mask添加Wall层…

讯飞智作 AI 配音技术浅析(二):深度学习与神经网络

讯飞智作 AI 配音技术依赖于深度学习与神经网络&#xff0c;特别是 Tacotron、WaveNet 和 Transformer-TTS 模型。这些模型通过复杂的神经网络架构和数学公式&#xff0c;实现了从文本到自然语音的高效转换。 一、Tacotron 模型 Tacotron 是一种端到端的语音合成模型&#xff…

初始化mysql报错cannot open shared object file: No such file or directory

报错展示 我在初始化msyql的时候报错&#xff1a;mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解读&#xff1a; libaio包的作用是为了支持同步I/O。对于数据库之类的系统特别重要&#xff0c;因此…

DeepSeek介绍

目录 前言 1.介绍一下你自己 2.什么是CUDA CUDA的核心特点&#xff1a; CUDA的工作原理&#xff1a; CUDA的应用场景&#xff1a; CUDA的开发工具&#xff1a; CUDA的局限性&#xff1a; 3.在AI领域&#xff0c;PTX是指什么 1. PTX 的作用 2. PTX 与 AI 的关系 3. …

python学opencv|读取图像(五十一)使用修改图像像素点上BGR值实现图像覆盖效果

【1】引言 前序学习了图像的得加方法&#xff0c;包括使用add()函数直接叠加BGR值、使用bitwise()函数对BGR值进行按位计算叠加和使用addWeighted()函数实现图像加权叠加至少三种方法。文章链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;四十二&#xff…

【硬件介绍】三极管工作原理(图文+典型电路设计)

什么是三极管&#xff1f; 三极管&#xff0c;全称为双极型晶体三极管&#xff0c;是一种广泛应用于电子电路中的半导体器件。它是由三个掺杂不同的半导体材料区域组成的&#xff0c;这三个区域分别是发射极&#xff08;E&#xff09;、基极&#xff08;B&#xff09;和集电极&…

【解决方案】MuMu模拟器移植系统进度条卡住98%无法打开

之前在Vmware虚拟机里配置了mumu模拟器&#xff0c;现在想要移植到宿主机中 1、虚拟机中的MuMu模拟器12-1是目标系统&#xff0c;对应的目录如下 C:\Program Files\Netease\MuMu Player 12\vms\MuMuPlayer-12.0-1 2、Vmware-虚拟机-设置-选项&#xff0c;启用共享文件夹 3、复…

C++中常用的十大排序方法之1——冒泡排序

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C中常用的排序方法之——冒泡排序的相关…

开源2+1链动模式AI智能名片S2B2C商城小程序:利用用户争强好胜心理促进分享行为的策略研究

摘要&#xff1a;随着互联网技术的快速发展和社交媒体的普及&#xff0c;用户分享行为在企业营销中的作用日益凸显。本文旨在探讨如何利用用户的争强好胜心理&#xff0c;通过开源21链动模式AI智能名片S2B2C商城小程序&#xff08;以下简称“小程序”&#xff09;促进用户分享行…

DeepSeek-R1环境搭建推理测试

引子 这两天国货之光DeepSeek-R1火爆出圈&#xff0c;凑个热闹。过来看看 aha moment&#xff08;顿悟时刻&#xff09;的神奇&#xff0c;OK&#xff0c;我们开始吧。 一、模型介绍 1月20日&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;发布的DeepSeek-…

【深度分析】微软全球裁员计划不影响印度地区,将继续增加当地就业机会

当微软的裁员刀锋掠过全球办公室时&#xff0c;班加罗尔的键盘声却愈发密集——这场资本迁徙背后&#xff0c;藏着数字殖民时代最锋利的生存法则。 表面是跨国公司的区域战略调整&#xff0c;实则是全球人才市场的地壳运动。微软一边在硅谷裁撤年薪20万美金的高级工程师&#x…

架构技能(六):软件设计(下)

我们知道&#xff0c;软件设计包括软件的整体架构设计和模块的详细设计。 在上一篇文章&#xff08;见 《架构技能&#xff08;五&#xff09;&#xff1a;软件设计&#xff08;上&#xff09;》&#xff09;谈了软件的整体架构设计&#xff0c;今天聊一下模块的详细设计。 模…

unity使用内置videoplayer打包到安卓手机进行视频播放

1.新建UI&#xff0c;新建RawImage在画布当作视频播放的显示载体 2.新建VideoPlayer 3.新建Render Texture作为连接播放器视频显示和幕布的渲染纹理 将Render Texture同时挂载在VideoPlayer播放器和RawImage上。这样就可以将显示的视频内容在RawImage上显示出来了。 问题在于&a…

LLMs之RAG:解读RAG主流的七类架构(Naive RAG/Retrieve-and-rerank/Multimodal RAG/GraphRAG/HybridRAG/Agentic RAG(Ro

LLMs之RAG&#xff1a;解读RAG主流的七类架构(Naive RAG/Retrieve-and-rerank/Multimodal RAG/GraphRAG/HybridRAG/Agentic RAG(Router)/Agentic RAG(Multi-Agent)) 目录 解读RAG主流的七类架构(Naive RAG/Retrieve-and-rerank/Multimodal RAG/GraphRAG/HybridRAG/Agentic RAG…