ReplitLMモデル ファミリのガイド、コード、構成。
これは継続的に更新され、モデル上に使用および構築する方法がさらに追加されています。
モデル | チェックポイント [CC BY-SA 4.0] | 語彙 [CC BY-SA 4.0] | コード [Apache 2.0] |
---|---|---|---|
レプリットコードv1-3b | ダウンロードリンク | ダウンロード | リポ |
レプリットコードv1_5-3b | (近日公開) | (近日公開) | 近日公開 |
2023 年 5 月 2 日: replit-code-v1-3b
また、モデルを直接使用できる、 replit-code-v1-3b
モデル用の GPU 搭載スペースもあります。
GPU を利用したホスト型デモ
リリースされたすべての Replit モデルは、Replit 組織ページの Hugging Face で入手でき、Hugging Face Transformers ライブラリで使用できます。
Hugging Face Transformers ライブラリで Replit モデルを使用できます。リリースされた各モデルの README には、ハグ フェイス トランスフォーマーでモデルを使用する方法が記載されています。トークナイザーでデコードするときは必ずclean_up_tokenization_spaces=False
を設定し、README に記載されている推奨後処理を使用してください。
モデル | お読みください |
---|---|
レプリットコードv1-3b | ドキュメント |
MosaicML の LLM Foundry および Composer を使用して、Replit モデルのさらなるトレーニング、事前トレーニング、微調整を行うことをお勧めします。
当社のReplitモデルはLLM Foundryと互換性があり、最先端のトレーニング技術、アーキテクチャコンポーネント、オプティマイザーなどを使用して、LLM Foundry + Composerで高度に最適化された方法でトレーニング/調整できます。すべてのモデル、LLM Foundry、および Composer トレーニング フレームワークは Pytorch ベースです。これらを使用すると、独自のデータセットで Replit モデルをトレーニングできます。
次の手順では、モデルをトレーニングするために必要な作業の概要を示し、各手順に必要な LLM Foundry ドキュメント セクションへのリンクを示します。
LLM ファウンドリをインストールする
LLM Foundry の使用を開始するには、LLM Foundry README に従って次のことを行うことができます。
高レベルでは、LLM Foundry は、構成 yaml を定義し、composer train/train.py <configuration_yaml_path> <extra_args のようなコマンドを使用して、定義された構成 yaml を使用して LLM Foundry リポジトリ内のtrain/train.py
トレーニングcomposer train/train.py <configuration_yaml_path> <extra_args>
ことによって使用されます。 composer train/train.py <configuration_yaml_path> <extra_args>
。 scripts/train/yamls ディレクトリには、微調整と保存の両方のためのサンプル YAML が含まれています。
複製モデルのその他の要件をインストールする
次に、 requirements.txt
で指定されている他の依存関係をいくつかインストールする必要があります。
LLM Foundry でトレーニングするには、データセットを Mosaic StreamingDataset 形式に変換する必要があります。
サポートされているデータセット ソースのタイプは、JSON データセットとハグ顔データセットです。
LLM Foundry のデータ準備ドキュメントには、これを行う方法の手順が記載されています。
上記の手順でconvert_dataset_hf.py
またはconvert_dataset_json.py
を実行するときは、引数--tokenizer replit/replit-code-v1-3b
を渡して、Replit トークナイザーを使用していることを指定する必要があります。重要な手順 ( llm-foundry
の現在の実装による) は、トークナイザーがmain()
メソッドに読み込まれるときに、 trust_remote_code=True
kwarg をAutoTokenizer.from_pretrained
呼び出しに渡すことによってscripts/data_prep/convert_dataset_hf.py
を編集することです。
変換されたデータセットのテスト
変換されたデータセットをテストし、データローダーで動作していることを確認するには、LLM Foundry ドキュメントの「データローダーのテスト」セクションに従ってください。
LLM Foundry を使用してトレーニングするには、実行構成 yaml を定義する必要があります。この yaml は、モデル、トレーニング データセット、評価データセットとメトリック、トレーニング パラメーターなどを定義します。
複製モデルの使用
LLM Foundry でトレーニング/調整するために定義した構成 YAML については、次のように YAML 内のモデル キーとトークナイザー キーを置き換えることで、Replit モデルをプラグインして使用できます。
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
これにより、構成の Hugging Face からの重みを含むモデルがロードされます。
データセットを変換し、実行構成 yaml を定義した後、LLM Foundry を使用してトレーニングを実行できます。
LLM Foundry ドキュメントの「トレーニングの開始方法」セクションに従ってトレーニングを実行します。このセクションでは、単一ノードおよびマルチノードのトレーニングを実行する方法を説明します。実際には、 composer train/train.py <configuration_yaml_path> <extra_args>
のようなコマンドを使用して、定義された構成 yaml を使用して LLM Foundry リポジトリ内のscripts/train/train.py
トレーニング スクリプトを実行します。
Composer には、チェックポイントを保存するために回避する必要があるハードコーディングされたロジックがいくつかあります。 scripts/train/train.py
トレーニング スクリプトで、モデルが初期化された直後、トレーニング データローダーがセットアップされる前に、行model.tokenizer = None
を追加します。つまり、作成時点では、 main()
の 147 行目です。これにより、トークナイザーをチェックポイント状態で保存しないことが効果的に保証されます。現在、Composer は*.py
ファイルを含むトークナイザーを使用したチェックポイントの保存を処理できないため、この回避策が必要です。
独自のユースケースに合わせてReplitLMモデルを指示調整できます。ほとんどの命令チューニングの使用例では、以下の顔を抱きしめる例から始めることをお勧めします。それ以外の場合は、LLM Foundry を使用して命令チューニングを行うための詳細なガイドも提供します。
transformers
ライブラリを使用して、Alpaca スタイルのデータセットでreplit-code-v1-3b
モデルを指示調整できます。
これを実現するには、次のような、既に Alpaca スタイル形式になっている指示チューニング データセットが必要になります。
オープンソースの貢献者 Teknium は、オリジナルの Alpaca リポジトリを、私たちのモデルで実行するように事前設定された stanford_alpaca-replit リポジトリにフォークしました。これを出発点として使用することを強くお勧めします。
このリポジトリには、トレーナーのセットアップと実行方法に関する手順が含まれています。必要な Alpaca スタイルのデータセット形式については、ここで説明します。 Alpaca スタイルでフォーマットされたデータセットはどれもトレーナーで機能します。たとえば、Code Alpaca データセットを使用すると、Teknium のリポジトリにあるトレーニング スクリプトを使用してモデルの調整を指示できます。
LLM Foundry を使用して命令チューニングを行うこともできます。これを行うには、大まかな次の手順を実行する必要があります。必要に応じて、従う必要がある具体的な詳細と手順がリンクされています。
LLM ファウンドリをインストールする
LLM Foundry の使用を開始するには、LLM Foundry README に従って次のことを行うことができます。
高レベルでは、LLM Foundry は、構成 yaml を定義し、composer train/train.py <configuration_yaml_path> <extra_args のようなコマンドを使用して、定義された構成 yaml を使用して LLM Foundry リポジトリ内のtrain/train.py
トレーニングcomposer train/train.py <configuration_yaml_path> <extra_args>
ことによって使用されます。 composer train/train.py <configuration_yaml_path> <extra_args>
。 scripts/train/yamls ディレクトリには、微調整と維持の両方のためのサンプル YAML が含まれています。
複製モデルのその他の要件をインストールする
次に、 requirements.txt
で指定されている他のいくつかの依存関係をインストールする必要があります。
次のいずれかになります。
使用しているデータセットによっては、LLM Foundry が期待する形式にデータセットをフォーマットする必要がある場合とそうでない場合があります。
カスタム前処理が必要ないデータセット
mosaicml/dolly_hhrlhf などの一部のデータセットには、すぐに使用できる前処理関数がすでに付属しています。公開時点では、次の Hugging Face データセットには、事前登録された前処理関数が付属しています: HuggingFaceH4/databricks_dolly_15k
、 Muennighoff/P3
、 Muennighoff/flan
、 bigscience/P3
、 tatsu-lab/alpaca
。
カスタム前処理が必要なデータセット
上記のデータセットを使用していない場合は、独自の前処理関数を作成して登録する必要があります。
どのようなデータセットでも、次のキーを含む辞書としてフォーマットされた各例が必要です。
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
つまり、各サンプルは 2 つのキーを持つ辞書です。これは、 finetuning
データローダーがダウンストリームで予期する形式です。
データセットのフォーマットに関するガイド
元の LLM Foundry リポジトリの「Data Formatting」セクションでは、これを行う方法について説明しています。
データを正しい形式にするためにカスタム前処理関数を作成する必要があり、LLM Foundry ドキュメントの手順がわかりにくい場合は、TL;DR を次のように言い換えます。
preprocess.py
) を作成します。preprocess_function()
を定義します。この関数は、データセットから 1 つのサンプルを入力として受け取り、サンプルを必要な形式にフォーマットする方法のロジックに従って、上記のキーprompt
とresponse
を含む辞書を返します。preprocess.py
) と関数 (たとえば、 preprocess_function()
) を指します。 これで、データセットを使用してReplitモデルを微調整できるようになりました。
ガイド
オリジナルの LLM Foundry リポジトリの「使用法」セクションでは、データセットの使用方法とReplit モデルの微調整方法について説明しています。
そのセクションでオプション 1) または 2) を使用している場合は、前の 2 つの手順で行ったことに基づいて、トレーニング YAML でtrain_loader
およびeval_loader
(該当する場合) を変更します。オプション 3) (ストリーミング データセット) を使用している場合は、まずプロンプト キーとレスポンス キーを使用してデータセットを適切な形式に変換し、それからローカル MDS データセットに書き込みます。この後、これを指すように YAML を変更できます。