前置きはこれくらいにして､ さっそく本題に入ろう｡
ローラについて語る
低ランクの適応｡
そしてこのセクションでは､ 数枚のスライドで少し理論的な話をするが､
恐れることはない｡
こうしたことを理解する最善の方法は､ 実際に見てみることだ｡
だから､ スライドを2､ 3枚見た後､ Colabに行き､ これらのことを実際に見てみるつもりだ｡
しかし､ まず文脈を整理する必要がある｡
これからllama 3を使うんだ｡ 今週はこれに1点｡
そしてラマ3世｡ 1には3つのサイズがある｡
パラメータサイズは80億､ 700億､ そして4,050億という途方もないサイズがある｡
ええと､ もちろん､ 小さいほうの80億を取ります｡
GPUが1つで､ 80億ウェイトとなると､ すでに32GBのラムを搭載していることになります｡
これを足すと､ そうなります｡ これは､ トレーニングを開始するときにモデルをメモリに保存しておくためで､
最適化を実行することになります｡
ええと､ それはあまりにも多くのメモリを消費するものだ｡
希望はない｡
80億のウェイトを最適化するのに膨大な時間がかかるからだ｡
処理量が多いんだ｡
もちろん､ フロンティア・ラボやメタのようなところは､
最大級のモデルには1億ドル以上の巨費を投じている｡
だから､ おそらく我々が使うようなお金ではない｡
ベースモデルから訓練することで､ 驚くほど低コストで､
特定のタスクを達成するのに優れたものを作ることができます｡
ええと､ ローラが何なのかを説明する前に､ ラマ建築について簡単にまとめておこう｡
さて､ このコースではニューラルネットワーク・アーキテクチャについて深入りするつもりはない｡
これは､ 詳細には触れないが､ いくつかの洞察や直感をお伝えするものだ｡
しかし､ ラマは3. 1 アーキテクチャは､ ニューロンの層のスタックとスタックで構成されている｡
このレイヤーには32のグループがあり､ それぞれのグループが構成されているんだ｡
つまり､ 各グループはラマ・デコーダー層と呼ばれる｡
その中には､ 自己注意層､ 多層パーセプトロン層､ サイロ活性化層､ ノルム層がある｡
これはすぐにわかる｡
まさか......もしかしたら､ これが何なのか､ もう知っているかもしれない｡
理論的なバックグラウンドがあればね｡
そうでなければ､ よりリアルに､ より具体的になる｡
Colabでこの建築を見るのはほんの一瞬だ｡
そして､ これらのパラメーターはすべて､ この大きな､ あー､ あー､ この､ あー､ レイヤード・アーキテクチャーに張り付いていて､
32ギガのメモリーを消費する｡
これが今､ ローラを支える大きなアイデアだ｡
つまり､ 私たちにできることは､ まずこれらのウェイトをすべて凍結させることだ｡
通常､ 最適化の際にはニューラルネットワークをフォワードパスする｡
ネットワークが予測した次のトークンを見て､ トークンがどうあるべきかを比較する｡
そして､ それに基づいて､ 次に正しいトークンを予測するために､
それぞれの重みをどれくらいずらせばいいかを考える｡
それが最適化の考え方だ｡
少し手探りだが､ おわかりだろう｡
文字通りだ｡
ハンドウェービー｡
ええと､ でも......ローラのコンセプトは､ まず第一に､ すべての重りを解放することなんだ｡
80億ものウェイトを最適化するのは､ あまりに多すぎるし､ 回すノブやグラデーションが多すぎるからだ｡
その代わりに､ 私たちがトレーニングしたいと思う重要なレイヤーをいくつか選ぶ｡
そして､ これらのレイヤー､ つまり､ この積み重ねられた､ あー､ レイヤーアーキテクチャーのこれらのモジュールは､ ターゲットモジュールとして知られている｡
だから､ このターゲット・モジュールという表現はそこからきている｡
と言うと､ 『スタートレック』に出てきそうだが､ これはトレーニングのために注目するニューラルネットワークのレイヤーを意味するだけで､
重みは凍結されたままである｡
その代わりに､ アダプター行列と呼ばれる次元数の少ない行列を新たに作成する｡
これらは次元が小さいか､ ランクが低くなる｡
そして､ これらのマトリックスをターゲット・モジュールに適用するテクニックを身につけるのだ｡
だから､ 彼らはターゲット・モジュールに合わせるだろう｡
その方法については後で説明する｡
しかし､ この計算式は､ 将来､ 青い低ランクのアダプターにどんな値が入っていたとしても､ 微妙にずれることを意味する｡
ターゲット・モジュールの中身を少し変えてみる｡
より低いランク､ より低い次元､ より少ない重みで､ これらのターゲット・モジュールに適用されるようにするのだ｡
そして､ ちょっとした技術的な問題が1つある｡
このようなニューラルネットワークでは次元が機能するため､ 実際には低ランクの行列が2つあり､
1つはa､ もう1つはBとして知られている｡
コードを見てもらえばわかるが､ これらはローラaとローラbと呼ばれている｡
つまり､ 2つのマトリックスがある｡
それを知ることはそれほど重要なことではないが､ コードの中でそれを見たときに確認してもらいたい｡
これを見て､ 2つの行列があることがわかるだろう｡
それらはターゲットモジュールに適用される｡
これは理にかなっている｡
そして､ それがローラ・フリアスの物語なのだ｡
メインモデルは､ 次元数の少ない小さな行列の束で構成される｡
これらはトレーニングの対象となる｡
彼らはトレーニングを受けた後､ 簡単な計算式を使ってターゲット・モジュールに適用される｡
そうすれば､ 学習すればするほど良くなるベースモデルを作ることができる｡
これらのローラ行列が適用されるからだ｡
ローラとはローランク・アダプテーションの略で､ 低ランク､ 低次元､ そしてターゲット・モジュールに適応することを意味する｡
これでよし｡
多くのことを話し､ 多くの言葉を並べたが､ 願わくば､ これがどのように組み合わされているのか､
直感的に理解してほしい｡
うーん､ でも次のセッションでは､ もうひとつだけ､ Q（量子化）について手短にお話ししましょう｡