私がよく調整するパラメータを共有します。
1.トレーニング時のパラメータ:
max_seq_length = xxxx:1回で読み込むtokenの数。(tokenは文字数を計算する単位、7500個英語の単語は10000tokenに相当)
max_new_tokens=xxx:1回で生成するtokenの数。
batch size=X:1回のイテレーションで処理するサンプルの数。
num_train_epochs=X:データセットの学習回数。(1epochは1回)
learning_rate=2e-4:学習率。値が大きいと学習は早くなるが、情報を失うリスクも高い。おすすめ範囲は1e-4から5e-5。
lr_scheduler_type='constant':学習率を自動調整するスケジューラ。より精度求める場合loss見て自分で書く
save_strategy="epoch":モデルを保存する頻度。epochごとや、ステップごとなどが選べる。
iter time:1回のイテレーションにかかる時間。
sample/sec:1秒間で処理できるサンプルの数。
trainloss:モデルの出力と正解との誤差。(小さいほど性能が高いを示すが、過学習にも注意が必要。大事なのはlossの安定性)
2.モデルの出力時のパラメータ:
1.return_source_documents=True:LLMの回答根拠を出すこと
2.do_sample=True:ランダムサンプリング。(trueにすると回答がより創造性がある。chatgptみたいなチャットボットは多分True)
2-2.temperature=X:ランダムサンプリングの強さを調整(0に近づけば近いほど回答が安定、1か1以上の場合は創造性が高い)
3.num_beams=X:安定回答求める場合使う(可能性が一番高いX個のtokenを使うために、正確さ重視するモデルならこれにする。do_sample=Falseにしないと動作できない)
4.repetition_penalty=X:重複ペナルティ(1以上だと重複しないようにモデルを調整する。1以下の場合は重複の結果が出てくる。おすすめは:1.1-1.5)
5. word2vec_db(embeddingの計算に使用されるvectorstore。計算速度は遅いが、ノイズに対して強く、多くの情報を保存することができる。)
5-2.chroma_db(embedding計算用vectorstore、計算スピードが速いですが、ノイズに対して弱い)