「Hugging Face AutoTrainを使用して、LLM(Language Model)を微調整する方法」

「ハグフェイスのAutoTrainを利用したLLM(ランゲージモデル)の微調整方法」

 

イントロダクション

 

近年、大規模言語モデル(LLM)は人々の仕事の仕方を変え、教育、マーケティング、研究などさまざまな分野で使用されてきました。潜在的な性能を考慮すると、LLMはビジネスの問題をより良く解決するために向上させることができます。そのため、LLMのファインチューニングを実行することができるのです。

特定のドメインのユースケースの採用、精度の改善、データのプライバシーとセキュリティの向上、モデルの偏見の制御など、これらの理由を含め、LLMをファインチューニングしたいと考えています。これらの利点を考慮すると、LLMをファインチューニングして本番環境で使用する方法を学ぶことは非常に重要です。

LLMの自動ファインチューニングを行う方法の一つは、Hugging FaceのAutoTrainを使用することです。HF AutoTrainは、コンピュータビジョン、タブラー、およびNLPタスクなどのさまざまなタスクのための最先端モデルをトレーニングするためのPython APIを使用したノーコードプラットフォームです。LLMのファインチューニングのプロセスについてあまり理解していなくても、AutoTrainの機能を利用することができます。

では、どのように機能するのでしょうか?さらに探ってみましょう。

 

AutoTrainの始め方

 

HF AutoTrainはノーコードの解決策ですが、Python APIを使用してAutoTrainの上に開発することができます。トレーニングにはノーコードプラットフォームが安定していないため、コードのルートを試してみます。ただし、ノーコードプラットフォームを使用する場合は、次のページを使用してAutoTrainスペースを作成することができます。全体プラットフォームは以下の画像に表示されます。

  

Python APIを使用してLLMをファインチューニングするために、次のコードを実行してPythonパッケージをインストールする必要があります。

pip install -U autotrain-advanced

 

また、HuggingFaceのAlpacaサンプルデータセットを使用しますが、それを取得するためにはdatasetsパッケージが必要です。

pip install datasets

 

次に、必要なデータを取得するために以下のコードを使用します。

from datasets import load_dataset #データセットを読み込むdataset = load_dataset("tatsu-lab/alpaca") train = dataset['train']

 

さらに、ファインチューニングに必要なデータをCSV形式で保存します。

train.to_csv('train.csv', index = False)

 

環境とデータセットの準備ができたら、HuggingFaceのAutoTrainを使用してLLMをファインチューニングしてみましょう。

 

ファインチューニングの手順と評価

 

ここでは、AutoTrainの例からファインチューニングのプロセスを適応します。プロセスを開始するには、ファインチューニングに使用するデータをdataというフォルダに配置します。

  

このチュートリアルでは、たった100行のデータサンプルのみを使用するため、トレーニングプロセスははるかに迅速になります。データが準備できたら、Jupyter Notebookを使用してモデルをファインチューニングすることができます。AutoTrainは、text列のデータのみを読み取るため、データに「text」列が含まれていることを確認してください。

まず、次のコマンドを使用してAutoTrainのセットアップを実行しましょう。

!autotrain setup

 

次に、AutoTrainが実行するのに必要な情報を提供します。次の情報はプロジェクト名と希望する事前学習モデルに関するものです。HuggingFaceで利用可能なモデルのみを選択することができます。

project_name = 'my_autotrain_llm'
model_name = 'tiiuae/falcon-7b'

 

次に、モデルをリポジトリにプッシュするか、プライベートモデルを使用する場合はHF情報を追加します。

push_to_hub = False
hf_token = "YOUR HF TOKEN"
repo_id = "username/repo_name"

 

最後に、以下の変数にモデルパラメータ情報を初期化します。結果が良いかどうかを確認するために、必要に応じて変更することができます。

learning_rate = 2e-4
num_epochs = 4
batch_size = 1
block_size = 1024
trainer = "sft"
warmup_ratio = 0.1
weight_decay = 0.01
gradient_accumulation = 4
use_fp16 = True
use_peft = True
use_int4 = True
lora_r = 16
lora_alpha = 32
lora_dropout = 0.045

 

必要な情報がすべて揃ったら、以前に設定したすべての情報を受け入れるように環境を設定します。

import os
os.environ["PROJECT_NAME"] = project_name
os.environ["MODEL_NAME"] = model_name
os.environ["PUSH_TO_HUB"] = str(push_to_hub)
os.environ["HF_TOKEN"] = hf_token
os.environ["REPO_ID"] = repo_id
os.environ["LEARNING_RATE"] = str(learning_rate)
os.environ["NUM_EPOCHS"] = str(num_epochs)
os.environ["BATCH_SIZE"] = str(batch_size)
os.environ["BLOCK_SIZE"] = str(block_size)
os.environ["WARMUP_RATIO"] = str(warmup_ratio)
os.environ["WEIGHT_DECAY"] = str(weight_decay)
os.environ["GRADIENT_ACCUMULATION"] = str(gradient_accumulation)
os.environ["USE_FP16"] = str(use_fp16)
os.environ["USE_PEFT"] = str(use_peft)
os.environ["USE_INT4"] = str(use_int4)
os.environ["LORA_R"] = str(lora_r)
os.environ["LORA_ALPHA"] = str(lora_alpha)
os.environ["LORA_DROPOUT"] = str(lora_dropout)

 

ノートブックでAutoTrainを実行するために、次のコマンドを使用します。

!autotrain llm \--train \--model ${MODEL_NAME} \--project-name ${PROJECT_NAME} \--data-path data/ \--text-column text \--lr ${LEARNING_RATE} \--batch-size ${BATCH_SIZE} \--epochs ${NUM_EPOCHS} \--block-size ${BLOCK_SIZE} \--warmup-ratio ${WARMUP_RATIO} \--lora-r ${LORA_R} \--lora-alpha ${LORA_ALPHA} \--lora-dropout ${LORA_DROPOUT} \--weight-decay ${WEIGHT_DECAY} \--gradient-accumulation ${GRADIENT_ACCUMULATION} \$( [[ "$USE_FP16" == "True" ]] && echo "--fp16" ) \$( [[ "$USE_PEFT" == "True" ]] && echo "--use-peft" ) \$( [[ "$USE_INT4" == "True" ]] && echo "--use-int4" ) \$( [[ "$PUSH_TO_HUB" == "True" ]] && echo "--push-to-hub --token ${HF_TOKEN} --repo-id ${REPO_ID}" )

 

AutoTrainが正常に実行された場合、ディレクトリに以下のフォルダがあり、AutoTrainによって生成されたすべてのモデルとトークナイザが含まれているはずです。 

モデルをテストするために、次のコードでHuggingFace transformersパッケージを使用します。

from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "my_autotrain_llm"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path)

 

次に、トレーニング入力に基づいてモデルを評価してみましょう。例えば、入力として「定期的な運動の健康上の利点」を使用します。

input_text = "Health benefits of regular exercise"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids)
predicted_text = tokenizer.decode(output[0], skip_special_tokens=False)
print(predicted_text)

 

 

結果は確かにまだ改善の余地がありますが、少なくとも私たちが提供したサンプルデータに近づいています。事前学習モデルとパラメータを調整して微調整を改善することができます。

 

成功する微調整のためのヒント

 

微調整プロセスを改善するために知っておきたいいくつかのベストプラクティスがあります。以下に示すようなものです:

  1. 代表的なタスクにマッチする品質のデータセットを準備すること、
  2. 使用した事前学習モデルを研究すること、
  3. オーバーフィッティングを避けるために適切な正則化技術を使用すること、
  4. 学習率を小さく始めて徐々に大きくしてみること、
  5. LLMは通常新しいデータを非常に速く学習するため、訓練には少ないエポックを使用すること、
  6. データ、パラメータ、モデルが大きくなるにつれて計算コストが高くなるため、計算コストを無視しないこと、
  7. 使用するデータに関する倫理的な考慮事項を確保すること。

 

結論

 

大規模言語モデルの微調整は、特定の要件が必要な場合にはビジネスプロセスにとって有益です。HuggingFace AutoTrainを使用することで、トレーニングプロセスを高速化し、利用可能な事前学習モデルを簡単に微調整することができます。

[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/)氏は、データサイエンスアシスタントマネージャーであり、データライターです。Allianz Indonesiaでフルタイムで働きながら、ソーシャルメディアや執筆メディアを通じてPythonとデータのヒントを共有することが大好きです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

3つの新しい方法、生成AIがあなたの検索に役立つ方法

今日から、私たちはSearch Labsで最初の実験の1つであるSGE(Search Generative Experience)へのアクセスを開始し始めます

機械学習

このAI論文は、「パーシウス」という画期的なフレームワークを紹介していますこれにより、大規模な機械学習やAIモデルのトレーニング時のエネルギー浪費を最大30%削減することが可能です

大きな言語モデル(GPT-3など)は、トレーニングと推論中の計算ニーズにより、相当なエネルギーを必要とします。エネルギー使...

機械学習

「コルーチンの実行のマスタリング:UnityにおけるYield、Flow、そして実用例」となります

この包括的なガイドを通じて、Unityでの高度なコルーチンの使用方法を探求しましょうyieldingのテクニック、ゲームループの統...

機械学習

エンタープライズAIとは何ですか?

エンタープライズAIの紹介 時間は重要であり、自動化が答えです。退屈で単調なタスク、人間によるミス、競争の混乱、そして最...

人工知能

7つの最高の履歴書ビルダーAIツール

これらのAI履歴書ビルダーツールは、人々の90%以上よりも優れた文章を書き、100%の人々よりも速く作成します

AI研究

「人間の活動認識におけるディープラーニング:このAI研究は、Raspberry PiとLSTMを使用した適応的なアプローチを導入し、位置に依存しない正確性を高めます」

ヒューマンアクティビティ認識(HAR)は、さまざまなセンサから収集したデータに基づいて、自動的に人間の活動を識別および分...