-
2024/08/29: InternEvoは、huggingface形式のストリーミングデータセットをサポートしています。データフローの詳細な手順を追加しました。
-
2024/04/17: InternEvoは、NPU-910Bクラスターでモデルのトレーニングをサポートしています。
-
2024/01/17: InternLMシリーズのモデルについてさらに詳しく知りたい方は、当社の組織内のInternLMをご覧ください。
InternEvoは、広範な依存関係を必要とせずにモデルの事前トレーニングをサポートすることを目的としたオープンソースの軽量トレーニングフレームワークです。単一のコードベースで、数千のGPUを搭載した大規模クラスターでの事前トレーニングと、単一GPUでのファインチューニングをサポートし、顕著なパフォーマンス最適化を実現しています。InternEvoは、1024個のGPUでのトレーニング中に約90%の加速効率を達成しています。
InternEvoトレーニングフレームワークを基に、当社はInternLM-7BシリーズやInternLM-20Bシリーズを含むさまざまな大規模言語モデルを継続的にリリースしています。これらのモデルは、LLaMAのような数多くの有名なオープンソースの大規模言語モデルや、その他の業界をリードするモデルを大きく上回る性能を発揮しています。
まず、指定バージョンのtorch、torchvision、torchaudio、およびtorch-scatterをインストールしてください。 たとえば:
pip install --extra-index-url https://download.pytorch.org/whl/cu118 torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+cu118.html
InternEvoをインストールします:
pip install InternEvo
flash-attention(バージョンv2.2.1)をインストールします:
もしflash-attentionを使用してトレーニングを加速する必要があり、あなたの環境でサポートされている場合は、以下の通りインストールしてください:
pip install flash-attn==2.2.1
インストール環境やソースコードインストールに関するより詳細な情報については、以下のリンクを参照してください インストールチュートリアル
まず、トレーニングスクリプトを準備してください train.py
より詳細な説明については、以下を参照してください トレーニングチュートリアル
次に、トレーニングまたはファインチューニングのためのデータを準備してください。
データセットをHuggingfaceからダウンロードし、roneneldan/TinyStories データセットを例にとって説明します:
huggingface-cli download --repo-type dataset --resume-download "roneneldan/TinyStories" --local-dir "/mnt/petrelfs/hf-TinyStories"
トークナイザーをローカルパスに配置してください。例として、https://huggingface.co/internlm/internlm2-7b/tree/main から special_tokens_map.json、tokenizer.model、tokenizer_config.json、tokenization_internlm2.py、tokenization_internlm2_fast.py をローカルの /mnt/petrelfs/hf-internlm2-tokenizer にダウンロードしてください。
次に、設定ファイルを以下のように変更します:
TRAIN_FOLDER = "/mnt/petrelfs/hf-TinyStories"
data = dict(
type="streaming",
tokenizer_path="/mnt/petrelfs/hf-internlm2-tokenizer",
)
他のタイプのデータセットの準備については、以下を参照してください 使用方法のチュートリアル
設定ファイルの内容は以下の通りです:7B_sft.py
より詳細な紹介については、以下を参照してください 使用方法のチュートリアル
トレーニングは、slurmまたはtorch distributed環境で開始できます。
Slurm環境で2ノード16カードを使用する場合、コマンドは以下の通りです:
$ srun -p internllm -N 2 -n 16 --ntasks-per-node=8 --gpus-per-task=1 python train.py --config ./configs/7B_sft.py
torchを使用し、1ノード8カードで実行する場合、コマンドは以下の通りです:
$ torchrun --nnodes=1 --nproc_per_node=8 train.py --config ./configs/7B_sft.py --launcher "torch"
アーキテクチャの詳細については、システムアーキテクチャドキュメントを参照してください。
データ | モデル | 並列 | ツール |
|
|
我々は、InternEvo を改善し、向上させるために尽力してくれたすべての貢献者に感謝している。コミュニティ・ユーザーのプロジェクトへの参加が強く推奨されます。プロジェクトへの貢献方法については、貢献ガイドラインを参照してください。
InternEvo コードベースは、上海 AI 研究所と様々な大学や企業の研究者によって貢献されたオープンソースプロジェクトです。プロジェクトに新機能を追加してくれたすべての貢献者と、貴重なフィードバックを提供してくれたユーザーに感謝したい。私たちは、このツールキットとベンチマークが、InternLM をファインチューニングし、独自のモデルを開発するための柔軟で効率的なコードツールをコミュニティに提供し、オープンソースコミュニティに継続的に貢献できることを願っています。2 つのオープンソースプロジェクト、flash-attention と ColossalAI に感謝します。
@misc{2023internlm,
title={InternLM: A Multilingual Language Model with Progressively Enhanced Capabilities},
author={InternLM Team},
howpublished = {\url{https://github.com/InternLM/InternLM}},
year={2023}
}