You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

475 lines
17 KiB

WEBVTT
00:01.160 --> 00:12.980
Colabに戻り、 Colabノートの7週目、 5日目を見ている。
00:12.980 --> 00:18.260
今日はトレーニングではなく、 推論をするのだから、 必要なのはそれだけだ。
00:18.590 --> 00:22.070
ええと、 トレーニングはまだこの別のタブで行われています。
00:22.070 --> 00:30.890
今話しているように、 まずインストールから始めて、 それから通常のインポートをいくつかする。
00:30.890 --> 00:34.190
そして、 ここにある定数についてお話ししましょう。
00:34.340 --> 00:39.380
ええと、 ベースモデルはもちろんラマ3。 1 プロジェクト名は、 抱きつき顔の使い手、 プライザー。
00:39.380 --> 00:41.450
だから、 ここで選んで、 入れることができる。
00:41.480 --> 00:47.480
さて、 あなたの名前を入れて、 あなたが微調整してハグハブにアップロードしたモデルに対して、 この推論、
00:47.480 --> 00:50.960
このテストを実行してくれることを願っている。
00:51.140 --> 01:03.680
しかし、 あなたが、 あー、 我慢の限界に達したか、 あるいは私のものがどうだったかを見たいだけという可能性もある。
01:03.680 --> 01:06.980
だから、 このモデルとも対戦できるだろう。
01:07.430 --> 01:10.460
ええと、 ここでランの名前を選択しました。
01:10.460 --> 01:11.210
これはランの名前である。
01:11.210 --> 01:19.220
そこにある39番は、 私が過去に何度もエポックに走ったものの、 抱き合わせのランネームだとお分かりになるかもしれない。
01:19.430 --> 01:25.940
ええと、 このリビジョンは、 どのチェックポイントを選択するかを指定するところです。
01:25.940 --> 01:29.720
ひどくオーバーフィットし始める前のものを選んでいる。
01:29.780 --> 01:34.640
うーん、 これはまだいい、 いい結果を出している方だった。
01:35.150 --> 01:39.200
そして、 これが私の微調整モデルの名前になる。
01:39.200 --> 01:40.880
もちろん、 ハグ顔の名前である。
01:40.880 --> 01:41.270
ごめんなさい.
01:41.270 --> 01:42.590
これを作らないといけない。
01:43.190 --> 01:45.080
そうでなければ、 ここに自分の名前をハードコーディングする。
01:45.080 --> 01:49.220
でも、 私がやることは、 これの2つのバージョンを作ることだ。
01:49.220 --> 01:55.340
ひとつは、 あなたがエントリーした抱きつきフェイスのユーザー用。
01:59.120 --> 02:14.500
もうひとつはコメントアウトして、 私のモデルを使う場合はこの行をコメントアウトしないようにします。
02:16.810 --> 02:24.100
それから、 もしあなたが自分のモデルを使うのであれば、 ラン名とリビジョンをあなたが使っているものに合わせて変更する必要がある。
02:24.100 --> 02:27.340
そして、 リビジョン・イコール・ノーンを入れないことから始めればいい。
02:27.730 --> 02:36.610
リビジョンをまったく使わないのであれば、 リビジョン・イコール・ノーだ。
02:36.610 --> 02:45.550
そして、 データセットについては......いずれにせよ、 あなたが注意深く、 愛情を込めてキュレーションし、 Huggingfaceのハブにアップロードしたデータセットを読み込みます。
02:45.700 --> 02:49.420
私のものを使ってもいいよ。
02:49.690 --> 02:55.630
さて、 ところで、 もしあなたがこれの廉価版を使って、 家電製品だけのモデルをトレーニングしたのであれば、
02:55.630 --> 03:01.170
もちろん、 あなたが構築した軽いデータセットと家電製品用のモデルを埋めれば、
03:01.200 --> 03:08.700
同じような結果が得られるはずです。
03:09.630 --> 03:11.520
クオンツ・フォー・ビットは真実だ。
03:11.550 --> 03:19.410
量子化し、 カラフルな線を出力する方法を覚えているだろう。
03:19.740 --> 03:20.280
オーケー。
03:20.310 --> 03:22.290
そして、 ハグをするためにログインする。
03:22.680 --> 03:24.090
もう慣れただろう。
03:24.240 --> 03:27.000
トレーニングをしているわけではないので、 ウェイトやバイアスに記録する必要はない。
03:27.000 --> 03:29.400
そしてデータセットをロードする。
03:29.400 --> 03:36.030
それに、 この時点で最初のトレーニング・データセットを見れば、 もうそれを使うことはないだろう。
03:36.030 --> 03:38.790
しかし、 その値段は織り込み済みだ。
03:38.820 --> 03:39.750
こんな感じだ。
03:39.780 --> 03:44.640
もちろん、 テストデータセットを使用する。
03:44.640 --> 03:46.800
本文には価格が書かれていない。
03:46.800 --> 03:50.940
値段は、 モデルに与えられない答えの中にしかない。
03:50.940 --> 03:54.060
この文章も与えられただけだ。
03:54.090 --> 04:04.420
この予測を実際に行う部分に入ったら、 すぐにトリプルチェックをすることができますよ」。
04:04.690 --> 04:06.010
でも、 私たちは違う。
04:06.070 --> 04:13.300
それではまず、 トークン・サイザーと微調整したモデルをロードしましょう。
04:13.300 --> 04:17.110
そこでまず、 適切な量子化を選ぶ。
04:17.140 --> 04:19.180
以前と同じでおなじみだろう。
04:19.210 --> 04:21.370
これも以前と同じだ。
04:21.490 --> 04:22.960
まあ、 ここだけ少し違う。
04:22.960 --> 04:24.460
しかし、 我々はトークナイザーを読み込む。
04:24.460 --> 04:28.540
パラメータを設定するために、 定型文を入れたんだ。
04:28.540 --> 04:33.850
先ほどと同じように、 右クオンツのコンフィグを使ってベースモデルをロードする。
04:33.880 --> 04:36.070
そして、 またあの一発ギャグが飛び出した。
04:36.070 --> 04:39.280
そしてこれが新しい。
04:39.280 --> 04:42.850
だから今、 左モデルというものをロードしている。
04:43.090 --> 04:46.510
覚えていれば、 パラメーターの効率的な微調整を意味する。
04:46.510 --> 04:51.850
ローラをコード化したパッケージの名前だ。
04:52.120 --> 04:57.850
つまり、 左のモデルは、 ベースがあるモデルを表す抱き合わせの顔のモデルなんだ。
04:57.850 --> 05:01.190
そして、 ベースの上にアダプターを装着する。
05:01.760 --> 05:02.990
だから、 それを積み込むんだ。
05:03.020 --> 05:05.090
今はフロンプレーンと呼んでいる。
05:05.090 --> 05:11.930
そして、 上で設定したベースモデル、 微調整したモデル名を渡すことができる。
05:11.930 --> 05:13.820
そして、 希望があれば修正もする。
05:13.820 --> 05:17.780
もしリビジョンがNULLでなければ、 それを渡す。
05:17.780 --> 05:20.570
そうでなければ、 わざわざパスする必要はない。
05:21.140 --> 05:26.570
そうすれば、 微調整したモデルがロードされる。
05:26.570 --> 05:28.670
そして最後に、 メモリのフットプリントを表示する。
05:28.700 --> 05:35.900
メモリフットプリントが5だったことを覚えているだろうか。 以前は6GBだったが、 今は5GBだ。 7.
05:35.930 --> 05:44.930
ラウラ・アダプターの100MBか109MBが追加されているから5700MBだ。
05:45.020 --> 05:48.950
ローラAとローラBがそこにいる。
05:49.070 --> 05:53.540
ええと、 もう一回、 この微調整されたモデルをプリントすればいいんだ。
05:53.540 --> 05:56.750
この記事を書いたのは1週間前のことだ。
05:56.750 --> 06:01.480
2日目、 僕が未来を見ていると言ったのは、 僕がこれを使っていたからなんだ。
06:01.480 --> 06:04.120
このモデル自体は私たちが見たものだ。
06:04.120 --> 06:05.620
そして、 このように見える。
06:05.620 --> 06:10.630
これを覚えておくと、 ニューラルネットワークのさまざまなレイヤーをすべて見ることができ、
06:10.630 --> 06:17.830
これらのレイヤー、 つまり張力レイヤーに到達すると、 そこにドロップアウトレイヤーがあることがわかる。
06:17.830 --> 06:20.860
今、 あなたは10%の確率でドロップアウトすることをすべて知っている。
06:20.860 --> 06:25.240
それにローラAとローラBもいる。
06:25.480 --> 06:34.690
ローラAとローラBは、 適応されたすべてのレイヤー、 つまりターゲット・モジュールのものだ。
06:34.690 --> 06:50.740
この層は、 ロジット、 つまり、 ボキャブ・トークン・ボキャブ・エントリーの可能性のある各数値を出力し、
06:50.740 --> 07:01.540
次のトークンの確率を予測するためにソフトマックスに入る。
07:02.560 --> 07:03.670
分かった。
07:04.360 --> 07:05.320
準備はできているか?
07:05.590 --> 07:09.520
だから、 推論を実行するんだ。
07:09.610 --> 07:21.100
ええと、 ええと、 もう1回、 簡単に、 ええと、 GPT4ゼロが76ラマ3ドルになったことを覚えておいてください。
07:21.100 --> 07:21.100
ベースモデル1台。
07:21.100 --> 07:24.670
この未経験モデルは396ドルだった。
07:24.670 --> 07:25.900
非常に残念だ。
07:26.140 --> 07:36.370
ええと、 この人間は127を、 ええと、 僕のエラーとして、 ええと、 ラマが人間に勝てるかどうかとても期待しているんだ。
07:36.670 --> 07:43.090
オープンソースのモデルとして重要なのは、 何かおかしなことを期待しているかもしれないが、
07:43.090 --> 07:51.430
物価は変動が激しいということを念頭に置いておくことだ。
07:51.430 --> 07:57.250
ある商品が値下げされたかどうかはわからない。
07:57.250 --> 08:04.860
そのため、 これらの製品の価格には当然大きなばらつきがある。
08:04.860 --> 08:07.290
これは非常に難しい挑戦だ。
08:07.290 --> 08:10.350
そんなに難しくないと思うかもしれない。
08:10.350 --> 08:11.190
とても難しいことだ。
08:11.220 --> 08:12.840
自分で試してみればわかる。
08:13.320 --> 08:14.820
うーん、 わかった。
08:14.970 --> 08:17.040
そのことを念頭に置いて、 話を続けよう。
08:17.040 --> 08:23.820
つまり、 価格を抽出する関数は、 文字列を受け取り、 価格がドルであるかどうかを調べます。
08:23.820 --> 08:34.410
そして、 もう一回、 それ以降のどの時点に来る数字も見つける。
08:34.410 --> 08:47.160
値段は1ドルで、 8ドル、 9ドル、 99ドルとか、 何でもいい。
08:47.490 --> 08:48.870
ああ、 わかってもらえたと思うよ。
08:48.990 --> 08:51.060
ええと、 それが抜き取り価格なんだ。
08:51.240 --> 09:01.670
それから、 これはモデル予測関数で、 前に使った関数です。
09:01.940 --> 09:04.460
うーん、 それはマスクに気を取られるね。
09:04.460 --> 09:06.980
さっき言ったのは、 それを避けるために使うものかい?
09:06.980 --> 09:12.440
警告を投げ、 入力プロンプトの大部分を予測する必要がないことを明確にする。
09:12.890 --> 09:20.570
そして、 微調整されたモデルで、 入力を渡して、 出力を生成する。
09:20.600 --> 09:29.270
このアテンション・マスクを渡すと、 新しいトークンは3つまでしか必要ない。
09:29.270 --> 09:33.530
でも、 万が一、 ひどいミスをしたときに、
09:33.560 --> 09:40.700
そのミスを捕捉できるように、 もう少し入れておく。
09:41.150 --> 09:46.580
さて、 たまたまだが、 私たちはこの予測関数よりもう少し良いものを作ることができる。
09:46.580 --> 09:48.770
これはまったく大きな違いではない。
09:48.770 --> 09:58.010
しかし、 しかし、 このモデルをこれだけコントロールできるようになったのだから、 次のトークンの扱い方をもう少しスマートにすることができる。
09:58.010 --> 09:59.720
それで、 この関数を書いたんだ。
09:59.720 --> 10:02.150
これは改良されたモデル予測機能だ。
10:02.150 --> 10:06.320
改善されたモデルは......うーん、 そうだね。
10:06.350 --> 10:09.110
ただ、 もう少し複雑なんだ。
10:09.290 --> 10:18.230
だから、 ええと、 ええと、 簡単に説明するけど、 超重要なことではないんだ。
10:18.230 --> 10:27.260
次のトークンの中から最も可能性の高いものを選ぶのではなく、 次のトークンの中から最も可能性の高い3つのトークンを選ぶのだ。
10:27.500 --> 10:30.830
そして、 この3つの確率は?
10:30.830 --> 10:32.390
そしてそれらは実数を表している。
10:32.390 --> 10:42.050
例えば、 100ドルの価値がある可能性が非常に高く、 99ドルの可能性は少し低いが、 101ドルの可能性はかなり高いと言ったかもしれない。
10:42.230 --> 10:43.760
しかし、 100が最高だった。
10:43.850 --> 10:47.060
そして、 これら3つの数値の加重平均を取る。
10:47.060 --> 10:52.310
そしてそれは、 何を予測しようとしているのかをもう少し正確に知るための方法なんだ。
10:52.490 --> 10:57.770
そして、 必ずしも整数ではない何かを予測することができる。
10:58.000 --> 11:01.480
僕が使ってきたテクニックなんだ。
11:01.480 --> 11:07.300
回帰問題を分類問題として扱っているという事実を解決するようなものだ。
11:07.360 --> 11:13.420
これを知っていることは超重要ではないが、 しかし、 上記の関数を使っても大差はない。
11:13.450 --> 11:14.800
ちょっとした違いだ。
11:15.010 --> 11:20.260
しかし、 ニューラルネットワークの最後の層に興味があるのであれば、
11:20.290 --> 11:27.670
これに目を通す価値があるかもしれません。 なぜなら、 私がしていることは、 入力に渡す微調整モデルの出力を取ることであり、
11:27.670 --> 11:38.860
これらはトークナイザーの可能な語彙エントリすべてにわたって、 このベクトルで述べたロジットとみなされるからです。
11:38.860 --> 11:43.180
そして、 それを確率に変換するためにソフトマックスを呼び出す。
11:43.180 --> 11:46.270
そして、 トップ3を通過する。
11:46.270 --> 11:51.490
そして、 これは上位3人の加重平均を取っただけのものだ。
11:51.610 --> 11:54.400
これは加重価格であり、 加重価格を合計したものである。
11:54.400 --> 11:56.050
そして、 それが返ってくる。
11:56.050 --> 11:58.660
だから、 モデル予測にとても似ている。
11:58.660 --> 12:05.260
ただ、 一番上の予想だけでなく、 上位3つの予想に基づいた、 少し正確な答えを出すだけだ。
12:05.890 --> 12:09.100
ええと、 それでクラスのテスターがいるんだ。
12:09.100 --> 12:12.700
これは以前使ったのとまったく同じテスター・クラスだ。
12:12.940 --> 12:21.250
ええと、 その前に申し上げたこと、 これは明らかに全体の核心であることを指摘しておく価値がある。
12:21.250 --> 12:28.780
渡された関数を呼び出すと、 渡されたのはデータ・ポイントに関連するテキストだけである。
12:28.810 --> 12:30.730
当然、 値段は言わない。
12:30.730 --> 12:35.800
知っているのはテキストだけで、 価格については何も知らない。
12:35.800 --> 12:37.330
もちろんだ。
12:37.720 --> 12:45.610
そして、 改良された関数を使用するテストを呼び、 テストに合格すると、
12:45.610 --> 12:57.070
ある種のソープオペラのように、 次のビデオでこの結果をお伝えします。
12:57.100 --> 12:58.540
そこで会おう。