Skip to content

Latest commit

 

History

History
195 lines (147 loc) · 8.97 KB

README-ja-JP.md

File metadata and controls

195 lines (147 loc) · 8.97 KB

InternEvo

最新ニュース 🔥

  • 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",
)

他のタイプのデータセットの準備については、以下を参照してください 使用方法のチュートリアル

Configuration File

設定ファイルの内容は以下の通りです: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 フィーチャーズー
データ モデル 並列 ツール
  • Tokenized
  • Streaming
  • ZeRO 1.5
  • 1F1B Pipeline Parallel
  • PyTorch FSDP Training
  • Megatron-LM Tensor Parallel (MTP)
  • Megatron-LM Sequence Parallel (MSP)
  • Flash-Attn Sequence Parallel (FSP)
  • Intern Sequence Parallel (ISP)
  • Memory Profiling

コントリビュート

我々は、InternEvo を改善し、向上させるために尽力してくれたすべての貢献者に感謝している。コミュニティ・ユーザーのプロジェクトへの参加が強く推奨されます。プロジェクトへの貢献方法については、貢献ガイドラインを参照してください。

謝辞

InternEvo コードベースは、上海 AI 研究所と様々な大学や企業の研究者によって貢献されたオープンソースプロジェクトです。プロジェクトに新機能を追加してくれたすべての貢献者と、貴重なフィードバックを提供してくれたユーザーに感謝したい。私たちは、このツールキットとベンチマークが、InternLM をファインチューニングし、独自のモデルを開発するための柔軟で効率的なコードツールをコミュニティに提供し、オープンソースコミュニティに継続的に貢献できることを願っています。2 つのオープンソースプロジェクト、flash-attentionColossalAI に感謝します。

引用

@misc{2023internlm,
    title={InternLM: A Multilingual Language Model with Progressively Enhanced Capabilities},
    author={InternLM Team},
    howpublished = {\url{https://github.com/InternLM/InternLM}},
    year={2023}
}