事前トレーニング、微調整、大規模な展開のためのレシピを備えた 20 以上の高性能 LLM。
✅ スクラッチからの実装 ✅ 抽象化なし ✅ 初心者に優しい ✅ フラッシュ注意 ✅ FSDP ✅ LoRA、QLoRA、アダプター ✅ GPU メモリを削減 (fp4/8/16/32) ✅ 1 ~ 1000+ GPU/TPU ✅ 20+ LLM
クイックスタート • モデル • Finetune • デプロイ • すべてのワークフロー • 機能 • レシピ (YAML) • Lightning AI • チュートリアル
すべての LLM は、抽象化や完全な制御を行わずに最初から実装されているため、エンタープライズ規模で非常に高速かつ最小限のパフォーマンスを発揮します。
✅エンタープライズ対応 - Apache 2.0 によりエンタープライズで無制限に使用できます。
✅開発者に優しい -抽象化レイヤーがなく、単一ファイルの実装でデバッグが簡単です。
✅最適化されたパフォーマンス -パフォーマンスを最大化し、コストを削減し、トレーニングを高速化するように設計されたモデル。
✅実証済みのレシピ -エンタープライズ規模でテストされた、高度に最適化されたトレーニング/微調整レシピ。
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 ドキュメントを参照してください。
すべてのモデルは、パフォーマンスを最大化し、抽象化レイヤーを削除するために、最初から作成されます。
モデル | モデルサイズ | 著者 | 参照 |
---|---|---|---|
ラマ 3、3.1、3.2 | 1B、3B、8B、70B、405B | メタAI | メタAI 2024 |
コードラマ | 7B、13B、34B、70B | メタAI | ロジエールら。 2023年 |
混合MoE | 8x7B | ミストラルAI | ミストラル AI 2023 |
ミストラル | 7B、123B | ミストラルAI | ミストラル AI 2023 |
コードジェマ | 7B | グーグル | Google チーム、Google ディープマインド |
ジェマ2 | 2B、9B、27B | グーグル | Google チーム、Google ディープマインド |
ファイ 3 および 3.5 | 3.8B | マイクロソフト | アブディンら。 2024年 |
... | ... | ... | ... |
モデル | モデルサイズ | 著者 | 参照 |
---|---|---|---|
コードジェマ | 7B | グーグル | Google チーム、Google ディープマインド |
コードラマ | 7B、13B、34B、70B | メタAI | ロジエールら。 2023年 |
ファルコン | 7B、40B、180B | TII アラブ首長国連邦 | TII 2023 |
FreeWilly2 (安定したベルーガ 2) | 70B | 安定性AI | 安定性 AI 2023 |
Llama 2 を呼び出す関数 | 7B | トレリス | トレリスら。 2023年 |
ジェマ | 2B、7B | グーグル | Google チーム、Google ディープマインド |
ジェマ2 | 9B、27B | グーグル | Google チーム、Google ディープマインド |
ラマ2 | 7B、13B、70B | メタAI | トゥヴロンら。 2023年 |
ラマ 3.1 | 8B、70B | メタAI | メタAI 2024 |
ラマ 3.2 | 1B、3B | メタAI | メタAI 2024 |
マストラル | 7B | ミストラルAI | ミストラル AI 2024 |
マイクロラマ | 300M | ケン・ワン | MicroLlama リポジトリ |
混合MoE | 8x7B | ミストラルAI | ミストラル AI 2023 |
ミストラル | 7B、123B | ミストラルAI | ミストラル AI 2023 |
オルモ | 1B、7B | アレン AI 研究所 (AI2) | Groeneveld et al. 2024年 |
OpenLLaMA | 3B、7B、13B | OpenLM リサーチ | 耿と劉 2023 |
ファイ1.5&2 | 1.3B、2.7B | マイクロソフトリサーチ | リーら。 2023年 |
ファイ 3 | 3.8B | マイクロソフトリサーチ | アブディンら。 2024年 |
カモノハシ | 7B、13B、70B | リーら。 | リー、ハンター、ルイス 2023 |
ピティア | {14,31,70,160,410}M、{1,1.4,2.8,6.9,12}B | エレウザーAI | ビダーマンら。 2023年 |
安定したコード | 3B | 安定性AI | 安定性 AI 2023 |
StableLM | 3B、7B | 安定性AI | 安定性 AI 2023 |
StableLM ゼファー | 3B | 安定性AI | 安定性 AI 2023 |
タイニーラマ | 1.1B | 張ら。 | 張ら。 2023年 |
ヒント: litgpt download list
コマンドを実行すると、利用可能なすべてのモデルを一覧表示できます。
微調整 • 事前トレーニング • 継続的な事前トレーニング • 評価 • 導入 • テスト
コマンド ライン インターフェイスを使用して、独自のデータの事前トレーニングや微調整などの高度なワークフローを実行します。
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
ファインチューニングは、事前トレーニングされた 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
微調整に関するドキュメント全体を読む
事前トレーニングまたは微調整された LLM をデプロイして、実際のアプリケーションで使用します。デプロイすると、Web サイトまたはアプリからアクセスできる 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" ])
導入ドキュメント全体を読んでください。
LLM を評価してさまざまなタスクのパフォーマンスをテストし、テキストをどの程度理解して生成しているかを確認します。簡単に言えば、大学レベルの化学、コーディングなどでどの程度うまく機能するかなどを評価できます (MMLU、Trusful QA など)。
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
評価ドキュメント全体を読んでください。
インタラクティブなチャットを通じてモデルがどの程度機能するかをテストします。 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 ?
特定のモデルのダウンロードには追加のアクセス トークンが必要です。詳細については、ダウンロード ドキュメントを参照してください。
チャット ドキュメント全体を読んでください。
事前トレーニングは、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
事前トレーニング ドキュメント全体を読む
継続的な事前トレーニングは、カスタム データでトレーニングすることによって、すでに事前トレーニングされたモデルを特殊化する別の微調整方法です。
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
続きの事前トレーニング ドキュメントの全文を読む
✅ 最先端の最適化: Flash アテンション v2、完全にシャード化されたデータ並列処理によるマルチ GPU サポート、オプションの CPU オフロード、TPU および XLA サポート。
✅ 事前トレーニング、微調整、デプロイ
✅ 低精度設定でコンピューティング要件を軽減します: FP16、BF16、FP16/FP32 混合。
✅ 量子化によるメモリ要件の削減: 4 ビット浮動小数点、8 ビット整数、および二重量子化。
✅ すぐに使える優れたパフォーマンスを実現する構成ファイル。
✅ パラメーター効率の高い微調整: LoRA、QLoRA、アダプター、アダプター 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
...
# 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
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
--lora_r 4
LitGPT は、多くの優れた AI プロジェクト、イニシアチブ、課題、そしてもちろん企業を推進します。機能の検討を希望される場合は、プル リクエストを送信してください。
Microsoft の研究者による Samba プロジェクトは、LitGPT コード ベース上に構築されており、状態空間モデルとスライディング ウィンドウ アテンションを組み合わせており、純粋な状態空間モデルよりも優れたパフォーマンスを発揮します。
LitGPT リポジトリは、NeurIPS 2023 LLM Efficiency Challenge の公式スターター キットでした。このコンテストは、単一の GPU 上で既存の非命令チューニング LLM を 24 時間かけて微調整することに重点を置いたコンテストです。
LitGPT は、TinyLlama プロジェクトと TinyLlama: オープンソースの小規模言語モデルの研究論文を支援しました。
MicroLlama は、TinyLlama と LitGPT を利用した 50B トークンで事前トレーニングされた 300M Llama モデルです。
LitGPT を利用した研究論文「Pre-training Small Base LMs with Lewer Tokens」では、より大きなモデルからいくつかの変換ブロックを継承し、より大きなモデルで使用されるデータのごく一部でトレーニングすることにより、より小さな基本言語モデルを開発しています。これは、これらの小さなモデルが、使用するトレーニング データとリソースが大幅に少ないにもかかわらず、大きなモデルと同等のパフォーマンスを発揮できることを示しています。
経験やハードウェアのレベルに関係なく、個人の寄稿者を歓迎します。皆さんの貢献は貴重であり、この協力的で協力的な環境で皆さんが何を達成できるか楽しみにしています。
始めましょう
⚡️ 微調整(含む) LoRA、QLoRA、およびアダプター
?事前トレーニング
モデルの評価
サポートされているカスタム データセット
?量子化
?メモリ不足 (OOM) エラーに対処するためのヒント
?? クラウド TPU の使用
この実装は Lit-LLaMA と nanoGPT を拡張しており、 Lightning Fabric ⚡ を利用しています。
LitGPT は、Apache 2.0 ライセンスに基づいてリリースされています。
研究で LitGPT を使用する場合は、次の研究成果を引用してください。
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}