2023年、チャットボット分野に残るのは「OpenAIのChatGPT」と「その他」の2陣営のみとなりそうだ。
ChatGPT は強力ですが、OpenAI がそれをオープンソース化することはほぼ不可能です。 「その他」陣営のパフォーマンスは低かったが、しばらく前に Meta によってオープンソース化された LLaMA など、多くの人々がオープンソースに取り組んでいます。
LLaMA は、パラメータ数が 70 億から 650 億に及ぶ一連のモデルの総称です。その中でも、パラメータ数 130 億の LLaMA モデルは、パラメータを上回る性能を発揮します。ほとんどのベンチマークでは、1,750 億の量の GPT-3 が使用されます。ただし、命令チューニング(命令チューニング)を行っていないモデルのため、生成効果は悪いです。
モデルのパフォーマンスを向上させるために、スタンフォード大学の研究者が命令の微調整作業を完了するのを支援し、Alpaca と呼ばれる新しい 70 億パラメータ モデル (LLaMA 7B に基づく) をトレーニングしました。 。具体的には、OpenAI の text-davinci-003 モデルに、Alpaca のトレーニング データとして 52K の命令に従うサンプルを自己命令方式で生成するよう依頼しました。実験結果は、アルパカの多くの行動が text-davinci-003 と類似していることを示しています。言い換えれば、パラメータがわずか 7B の軽量モデル Alpaca のパフォーマンスは、GPT-3.5 などの非常に大規模な言語モデルのパフォーマンスに匹敵します。
一般の研究者にとって、これは実用的で安価な微調整方法ですが、それでも大量の計算が必要です (著者はこう述べています)彼らは 8 台の 80GB A100 で 3 時間かけて微調整しました)。さらに、Alpaca のシード タスクはすべて英語であり、収集されるデータも英語であるため、トレーニング済みモデルは中国語用に最適化されていません。
微調整のコストをさらに削減するために、スタンフォード大学の別の研究者である Eric J. Wang は、LoRA (低ランク適応) テクノロジーを使用して Alpaca の結果を再現しました。 。具体的には、Eric J. Wang 氏は RTX 4090 グラフィックス カードを使用して Alpaca と同等のモデルをわずか 5 時間でトレーニングし、そのようなモデルのコンピューティング能力要件を消費者レベルまで削減しました。さらに、モデルは Raspberry Pi 上で実行できます (研究用)。
LoRA の技術原則。 LoRA のアイデアは、元の PLM の隣にバイパスを追加し、次元削減を実行してから次元操作を実行して、いわゆる固有ランクをシミュレートすることです。トレーニング中、PLM のパラメーターは固定され、次元削減行列 A と次元強化行列 B のみがトレーニングされます。モデルの入力次元と出力次元は変更されず、出力中に BA と PLM のパラメーターが重ね合わされます。 A をランダムなガウス分布で初期化し、B を 0 行列で初期化し、トレーニングの開始時にバイパス行列がまだ 0 行列であることを確認します (引用元: https://finisky.github.io/lora/)。 LoRA の最大の利点は、高速でメモリ使用量が少ないため、消費者グレードのハードウェアで実行できることです。
Eric J. Wang によって投稿された Alpaca-LoRA プロジェクト。
プロジェクトアドレス: https://github.com/tloen/alpaca-lora
自分自身を訓練したいクラス向けこれは、ChatGPT モデル (ChatGPT の中国語版を含む) を使用しているものの、トップレベルのコンピューティング リソースを持たない研究者にとって、間違いなく大きな驚きです。したがって、Alpaca-LoRA プロジェクトの出現後、プロジェクトに関連するチュートリアルとトレーニング結果が次々と作成されており、この記事ではそれらのいくつかを紹介します。
Alpaca-LoRA プロジェクトで、著者は、微調整を安価かつ効率的に実行するために次のように述べました。 、彼らはHugging FaceのPEFTを使用しました。 PEFT は、さまざまな Transformer ベースの言語モデルを取得し、LoRA を使用してそれらを微調整できるライブラリ (LoRA はサポートされているテクノロジの 1 つ) です。利点は、小規模なハードウェアで、より小さな (おそらくコンポーザブルな) 出力で、モデルを安価かつ効率的に微調整できることです。
最近のブログで、数名の研究者が、Alpaca-LoRA を使用して LLaMA を微調整する方法を紹介しました。
Alpaca-LoRA を使用する前に、いくつかの前提条件を満たしている必要があります。 1 つ目は GPU の選択です。LoRA のおかげで、NVIDIA T4 や 4090 コンシューマ GPU などの低スペック GPU で微調整を完了できるようになりました。さらに、LLaMA の重みは公開されていないため、申請する必要もあります。
前提条件が満たされたので、次のステップは Alpaca-LoRA の使用方法です。まず、Alpaca-LoRA リポジトリのクローンを作成する必要があります。コードは次のとおりです。
git clone https://github.com/daanelson/alpaca-lora cd alpaca-lora
次に、LLaMA の重みを取得します。ダウンロードした重み値を unconverted-weights という名前のフォルダーに保存します。フォルダー階層は次のとおりです:
unconverted-weights ├── 7B │ ├── checklist.chk │ ├── consolidated.00.pth │ └── params.json ├── tokenizer.model └── tokenizer_checklist.chk
重みが保存されたら、次のコマンドを使用して PyTorch に重みを追加します。チェックポイントはトランスフォーマーと互換性のある形式に変換されます:
cog run python -m transformers.models.llama.convert_llama_weights_to_hf --input_dir unconverted-weights --model_size 7B --output_dir weights
最終的なディレクトリ構造は次のようになります:
weights ├── llama-7b └── tokenizermdki
上記を処理しますステップ 3: Cog のインストール:
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)" sudo chmod +x /usr/local/bin/cog
4 番目のステップは、モデルを微調整することです。デフォルトでは、微調整スクリプトで構成された GPU は弱いですが、 GPU のパフォーマンスを向上させるには、finetune.py で MICRO_BATCH_SIZE を 32 または 64 に増やすことができます。さらに、データセットを調整するディレクティブがある場合は、finetune.py の DATA_PATH を編集して独自のデータセットを指すようにできます。この操作では、データ形式が alpaca_data_cleaned.json と同じであることが保証される必要があることに注意してください。次に、微調整スクリプトを実行します。
cog run python finetune.py
微調整プロセスには、40GB A100 GPU では 3.5 時間かかり、性能の低い GPU ではさらに時間がかかりました。
最後のステップは、Cog を使用してモデルを実行することです:
$ cog predict -i prompt="Tell me something about alpacas." Alpacas are domesticated animals from South America. They are closely related to llamas and guanacos and have a long, dense, woolly fleece that is used to make textiles. They are herd animals and live in small groups in the Andes mountains. They have a wide variety of sounds, including whistles, snorts, and barks. They are intelligent and social animals and can be trained to perform certain tasks.
チュートリアルの作成者は、上記のステップを完了すると、
Alpaca のパフォーマンスは GPT 3.5 に匹敵しますが、シード タスクはすべて英語であり、収集されたデータも英語です。英語なので、トレーニング済みモデルは中国語に適していません。中国語での対話モデルの有効性を高めるために、より優れたプロジェクトをいくつか見てみましょう。
1 つ目は、華中師範大学およびその他の機関の 3 人の個人開発者によるオープンソースの中国語モデル Luotuo (Luotuo) です。このプロジェクトは、LLaMA、Stanford Alpaca、Alpaca LoRA に基づいています。 , ニホンアルパカ - LoRAが完了すると、カード1枚で訓練展開が完了できる。興味深いことに、LLaMA (ラマ) とアルパカ (アルパカ) の両方が偶蹄目 - ラクダ科に属しているため、彼らはモデルをラクダと名付けました。そういう意味でもこの名前は期待できます。
このモデルは、Meta のオープンソース LLaMA に基づいており、Alpaca と Alpaca-LoRA の 2 つのプロジェクトを参照して中国語でトレーニングされました。
# プロジェクトアドレス: https://github.com/LC1332/ Chinese-alpaca-lora
# #現在、このプロジェクトは luotuo-lora-7b-0.1 と luotuo-lora-7b-0.3 の 2 つのモデルをリリースしており、別のモデルも計画されています:
##以下は効果表示です:
#ただし luotuo-lora-7b-0.1 (0.1) 、luotuo-lora-7b-0.3 (0.3) にはまだギャップがあります。ユーザーが華中師範大学の住所を尋ねたとき、0.1 は間違って答えました:
単純な会話だけでなく、保険関連の分野でモデルの最適化を行った人もいます。この Twitter ユーザーによると、Alpaca-LoRA プロジェクトの助けを借りて、中国の保険の質問と回答のデータを入力したところ、最終的な結果は良好でした。
具体的には、著者は 3,000 を超える中国語の質問と回答の保険コーパスを使用して、Alpaca LoRa の中国語版をトレーニングしました。実装プロセスでは LoRa メソッドを使用し、Alpaca 7B モデルを微調整しました。 、所要時間は 240 分、最終損失は 0.87 でした。 ####################################################################### 以下はトレーニングのプロセスと結果です:
# #テスト結果は次のことを示しています。 1. トレーニング コーパスに関連するコンテンツは、おおよそ合理的な応答を返すことができますが、それがナンセンスでない場合に限ります。 2. コーパスに関連しないコンテンツは、特定のコーパス内のデータに対して強制的に応答します。 3. 論理的推論と数学的計算にはこの機能がありません。
この結果を見たネチズンは、職を失うと叫びました。
最後に、さらに多くの中国語対話モデルが追加されることを楽しみにしています。
以上がChatGPT の中国語版のトレーニングはそれほど難しくありません。A100 がなくても、オープンソースの Alpaca-LoRA+RTX 4090 を使用して行うことができます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。