5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Adamより50%速い最適化アルゴリズム(Adam-mini)が公開されました

Posted at

最近、LLMトレーニング中のメモリを大幅に削減できる技術が登場したので、紹介したいと思います。この技術は「Adam-mini」と呼ばれ、従来のAdamの改良版です。
ディープラーニングにおいて、Adamは最も一般的に使われている最適化アルゴリズムであり、LLMのトレーニングではほぼ標準となっています。最適化アルゴリズムは主にモデルのパラメータを更新・計算し、lossを最小化するために使用されます。

Adamは計算速度が速く、性能も優れていますが、メモリ使用量が比較的多いという課題があります。例えば、7Bのモデルをトレーニングする場合、optimizerの状態(m、vというパラメータ)を保存するために、少なくとも約50GB以上のメモリが必要になります。

最近公開されたAdam-miniは、トレーニング中のメモリ使用量を半分に削減できると謳っています。基本的には、transformerの設定において、トレーニング時に各パラメータブロックに異なる学習率を設定する必要があります。しかし、Adamは精度を求めるために、パラメータブロック単位ではなく、各パラメータに異なる学習率を割り当てています。(通常、パラメータは数十億個ありますが、パラメータブロックは約数百個程度です)。

なので、Adam-miniの開発チームは学習率をパラメータレベルまで精密に設定する必要はなく、パラメータブロックレベルで十分ではないかという仮説を立て、検証しました。その結果、パラメータブロックレベルでも精度はそれほど損なうことなく、処理速度は大幅に向上させることができることが分かりました。

⇩はllama3-7Bモデルのトレーニングを行った結果です。メモリ使用量が約50%削減され、スループットも50%向上したとのことです。

image.png

私も試してみましたが、なぜかうまくいきませんでした。トレーニング後のモデル(チェックポイント)のサイズは確かに大幅小さくなったものの、トレーニング中のメモリ使用量は変化しませんでした。メモリ使用量が変わらなかったため、当然ながらスループットも向上しませんでした。
この問題をgitHubのissueで質問しようとしたところ、既に複数の人が同じような状況を報告しています。現時点では開発チームからまだ回答はないですが、回答があり次第、もう一度試してみたいと思います。

興味ある方:

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?