8-bit Adam オプティマイザーのセットアップ
Transformer モデルをリアルタイム言語翻訳に向けて学習させているものの、Adafactor では効果的に学習が進まないことがわかりました。そこで、8-bit Adam オプティマイザーを試してみましょう。このオプティマイザーを使うと、通常の Adam と比べてメモリ使用量を約 75% 削減できます。
bitsandbytes ライブラリは bnb としてインポート済みで、TrainingArguments は args として定義されており、optimizer_grouped_parameters もあらかじめ読み込まれています。なお、この演習では libbitsandbytes_cpu.so に関する警告メッセージが表示されますが、演習を進める上で無視して問題ありません。
この演習はコースの一部です
PyTorch による効率的な AI モデルトレーニング
演習の手順
bnb.optimのAdam8bitクラスを使って、8-bit Adam オプティマイザーをインスタンス化します。- 8-bit Adam オプティマイザーに beta1 と beta2 のパラメーターを渡します。
- 8-bit Adam オプティマイザーに epsilon パラメーターを渡します。
- 8-bit Adam オプティマイザーの入力パラメーターを出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Instantiate the 8-bit Adam optimizer
adam_bnb_optim = bnb.optim.____(optimizer_grouped_parameters,
# Pass in the beta1 and beta2 parameters
betas=(args.____, args.____),
# Pass in the epsilon parameter
eps=args.____,
lr=args.learning_rate)
# Print the input parameters
print(f"beta1 = {args.adam_beta1}")
print(f"beta2 = {args.____}")
print(f"epsilon = {args.____}")
print(f"learning_rate = {args.learning_rate}")