From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
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.
355 lines
12 KiB
355 lines
12 KiB
WEBVTT |
|
|
|
00:00.470 --> 00:01.040 |
|
分かった。 |
|
|
|
00:01.040 --> 00:02.750 |
|
どうなるか楽しみですか? |
|
|
|
00:02.780 --> 00:04.130 |
|
試してみよう。 |
|
|
|
00:04.160 --> 00:15.890 |
|
そこで次のセクションでは、 πという文字列を作り、 その中に1マイナス3プラス5、 マイナス7プラス9という一連の計算をするコードを入れる。 |
|
|
|
00:15.890 --> 00:17.420 |
|
それは自分の目で確かめてほしい。 |
|
|
|
00:17.450 --> 00:18.770 |
|
ミスの数をチェックする。 |
|
|
|
00:18.770 --> 00:23.690 |
|
それを100万回繰り返すんだ。 |
|
|
|
00:24.170 --> 00:28.640 |
|
そのひとつひとつを見ることができるのだから。 |
|
|
|
00:28.670 --> 00:31.130 |
|
あのシリーズでは2つの要素を2つやっているようなものだ。 |
|
|
|
00:31.130 --> 00:33.710 |
|
だから、 このシリーズは2億本だ。 |
|
|
|
00:33.710 --> 00:38.300 |
|
そして、 πにどれだけ近づけるかを見て、 その結果をプリントする。 |
|
|
|
00:38.570 --> 00:40.700 |
|
だから、 そうしよう。 |
|
|
|
00:40.820 --> 00:46.970 |
|
もちろん、 自分たちが何をしているのかよくわかっているからこそできることだ。 |
|
|
|
00:46.970 --> 00:51.140 |
|
しかし、 誰かがexacと言うときはいつも少し疑ってかかるべきだ。 |
|
|
|
00:51.170 --> 00:56.690 |
|
ExACはもちろん、 文字列で指定されたPythonコードを実行するコマンドだ。 |
|
|
|
00:56.720 --> 01:02.820 |
|
そして今、 あなたはこのストリングが悪に対して何もしていないことを確信できる。 |
|
|
|
01:02.820 --> 01:04.350 |
|
このシリーズをやっているだけだよ。 |
|
|
|
01:04.350 --> 01:09.060 |
|
しかし、 誰かがあなたにexecを含むコードを渡すときは、 ファイルシステムやインターネット接続などにおかしなことがないか、 |
|
|
|
01:09.060 --> 01:13.530 |
|
常にダブルチェックする必要がある。 |
|
|
|
01:13.530 --> 01:17.820 |
|
しかし、 この場合はかなり安全であることが保証されるので、 試してみよう。 |
|
|
|
01:17.850 --> 01:18.600 |
|
正確な円周率。 |
|
|
|
01:18.630 --> 01:20.040 |
|
どうなるか見てみよう。 |
|
|
|
01:21.270 --> 01:23.400 |
|
だから間が空く。 |
|
|
|
01:23.430 --> 01:27.570 |
|
Pythonはそのうちの2億語を考えている。 |
|
|
|
01:27.570 --> 01:28.500 |
|
さあ、 行こう。 |
|
|
|
01:28.500 --> 01:31.080 |
|
では、 その後、 円周率がどの程度になるか見てみよう。 |
|
|
|
01:31.080 --> 01:33.090 |
|
3. 14159265. |
|
|
|
01:33.090 --> 01:34.650 |
|
そしてその桁は間違っている。 |
|
|
|
01:34.890 --> 01:39.960 |
|
つまり、 2億の用語はそれほど大きなものではないのだ。 |
|
|
|
01:39.960 --> 01:40.320 |
|
円周率 |
|
|
|
01:40.350 --> 01:48.000 |
|
ご存じかもしれないが、 収束が非常に速い、 より優れたシリーズがある。 |
|
|
|
01:48.030 --> 01:51.840 |
|
これは、 書くのは超シンプルだが、 徐々に収束していくという利点だ。 |
|
|
|
01:51.840 --> 01:57.870 |
|
だから8回かかった。 5764秒かかる。 |
|
|
|
01:58.120 --> 02:03.100 |
|
これを何度か実行すれば、 マシン上で起こっている他のことのために、 かなりの量が変化することがわかるだろう。 |
|
|
|
02:03.100 --> 02:06.760 |
|
あなたのマシンと私のマシンは違うけど、 大まかなことはわかるだろう。 |
|
|
|
02:06.790 --> 02:07.390 |
|
オーケー。 |
|
|
|
02:07.420 --> 02:13.480 |
|
つまり、 GPT piを最適化すれば、 C+++のコードがストリームアウトされ、 GPT 4にユーザー・プロンプトの一部としてその文字列を送ることで、 |
|
|
|
02:13.480 --> 02:18.460 |
|
同じことができるはずだ。 |
|
|
|
02:18.490 --> 02:20.320 |
|
さて、 何が出てくるかな。 |
|
|
|
02:20.740 --> 02:22.690 |
|
ええと、 これは私が君に言ったことなんだ。 |
|
|
|
02:22.690 --> 02:28.030 |
|
これはファイルの先頭に置かれ、 ディスクに保存する前にこれを取り除く。 |
|
|
|
02:28.060 --> 02:29.800 |
|
これがその方法だ。 |
|
|
|
02:29.920 --> 02:42.370 |
|
あなたはC++の第一人者かもしれないし、 そうでないかもしれないが、 似たようなことの知識から、 これが同じことをやっているという事実を理解することはできるだろう。 |
|
|
|
02:42.520 --> 02:50.740 |
|
同じような計算を、 同じような項数で行っていて、 最適化されたCプラスプラスのファイルをここに書いている。 |
|
|
|
02:50.740 --> 02:52.390 |
|
そして、 そこにある。 |
|
|
|
02:52.390 --> 02:54.040 |
|
すべてがうまくいっているのがわかるだろう。 |
|
|
|
02:54.040 --> 03:01.370 |
|
そして、 このパッケージには、 セット精度機能を使用するため、 必要なものが含まれている。 |
|
|
|
03:01.370 --> 03:06.650 |
|
そして、 もしユーザー・プロンプトにそのように書かないと、 このパッケージが含まれていないことに気づき、 それが原因で壊れてしまう。 |
|
|
|
03:06.650 --> 03:07.910 |
|
そうだ。 |
|
|
|
03:08.030 --> 03:10.790 |
|
何はともあれ、 私たちはヒントを与え、 それを実行した。 |
|
|
|
03:11.330 --> 03:12.710 |
|
うーん、 わかった。 |
|
|
|
03:12.710 --> 03:14.090 |
|
次のセルを見てほしい。 |
|
|
|
03:14.090 --> 03:15.110 |
|
だから、 この次のセルだ。 |
|
|
|
03:15.110 --> 03:25.010 |
|
覚えているだろうか、 Jupyterで感嘆符をつけると、 それをターミナル・コマンドとして実行する。 |
|
|
|
03:25.010 --> 03:27.800 |
|
ここでやっているのはターミナル・コマンドだ。 |
|
|
|
03:27.800 --> 03:29.570 |
|
あー、 ガチャン++。 |
|
|
|
03:29.570 --> 03:35.030 |
|
そして、 この特別な声明は最適化されている。 |
|
|
|
03:35.030 --> 03:39.740 |
|
コンパイルして、 C++のコードを実行するのだ。 |
|
|
|
03:39.980 --> 03:44.000 |
|
ええと、 この後、 さらに最適化された方法を使います。 |
|
|
|
03:44.000 --> 03:47.750 |
|
しかし、 これは今のところ、 あなたのコンピューターには適している。 |
|
|
|
03:47.750 --> 03:51.350 |
|
コンパイルに何が必要なのか、 ググってみるといいだろう。 |
|
|
|
03:51.470 --> 03:57.690 |
|
ええと、 もしあなたがマックを使っているなら、 少なくともXcodeを開いて、 最新のXcodeツールがインストールされていることを確認し、 |
|
|
|
03:57.690 --> 04:02.070 |
|
最新バージョンのコンパイラがあることを確認する必要があるかもしれません。 |
|
|
|
04:02.190 --> 04:06.630 |
|
うーん、 でも、 でも、 そんなことはともかく、 ググればCプラス・プラス・ファイルのコンパイル方法がわかるよ。 |
|
|
|
04:06.690 --> 04:12.360 |
|
ええと、 この行を最適化されたCプラス・コンパイルに変更し、 最適化されたCPPファイルをコンパイルすれば、 |
|
|
|
04:12.390 --> 04:14.370 |
|
もちろんそれが実行方法となる。 |
|
|
|
04:14.370 --> 04:21.450 |
|
だから、 私たちが打ち負かそうとしているのは8点であることを忘れないでほしい。 57秒 |
|
|
|
04:21.450 --> 04:26.520 |
|
GPT4がどのような結果を残したか見てみよう。 |
|
|
|
04:26.520 --> 04:27.540 |
|
さあ、 始めよう。 |
|
|
|
04:29.280 --> 04:37.410 |
|
そして、 少なくとも658と同じ答えを持っている。 |
|
|
|
04:37.440 --> 04:37.920 |
|
そうだ。 |
|
|
|
04:37.920 --> 04:38.550 |
|
そのようだ。 |
|
|
|
04:38.550 --> 04:39.990 |
|
つまり、 多少は期待できるということだ。 |
|
|
|
04:40.020 --> 04:42.300 |
|
四捨五入の違いもない。 |
|
|
|
04:42.300 --> 04:44.310 |
|
まさにその通りだと思う。 |
|
|
|
04:44.310 --> 04:47.520 |
|
しかも、 ほんのわずかな時間でだ。 21. |
|
|
|
04:47.610 --> 04:55.180 |
|
つまり、 10倍から100倍速いということだ。 |
|
|
|
04:55.330 --> 04:58.810 |
|
後で、 さらに最適化すれば、 これよりもっといいものができることがわかるだろう。 |
|
|
|
04:58.810 --> 04:59.020 |
|
でもね。 |
|
|
|
04:59.020 --> 05:01.360 |
|
しかし、 このフラッグのおかげで、 それが実現したのだ。 |
|
|
|
05:01.390 --> 05:02.980 |
|
かなり印象的だ。 |
|
|
|
05:03.010 --> 05:12.550 |
|
我々は、 PythonからCプラスプラスにコードを変換し、 何倍も速く実行できるものを作ったところだ。 |
|
|
|
05:12.580 --> 05:14.890 |
|
クロードがどうするか見てみよう。 |
|
|
|
05:18.340 --> 05:21.220 |
|
では、 早速コードを見比べてみよう。 |
|
|
|
05:22.960 --> 05:25.840 |
|
コードもよく似ている。 |
|
|
|
05:26.020 --> 05:29.260 |
|
見ていただければわかると思いますが、 微妙な違いがあります。 |
|
|
|
05:29.260 --> 05:35.470 |
|
例えば、 ここにこんなものがある。 |
|
|
|
05:35.470 --> 05:42.310 |
|
私はCプラスプラスの専門家ではないが、 1、 2年前にCプラスプラスでコーディングしたことはある。 |
|
|
|
05:42.460 --> 05:45.640 |
|
でも、 悲しいかな、 僕の中ではそれはすべて入れ替わっているんだ。 |
|
|
|
05:45.670 --> 05:48.610 |
|
それに、 このレベルに達することはなかっただろうね。 |
|
|
|
05:48.610 --> 05:54.590 |
|
並列化が可能であることを示唆するさまざまなヒントが含まれていると思うが、 このようなものについては、 |
|
|
|
05:54.620 --> 06:00.320 |
|
コンパイラーはどちらの場合にもそれを適用するのではないかと思う。 |
|
|
|
06:00.350 --> 06:07.820 |
|
同じコマンドを実行して、 実際に違いが出るかどうか見てみよう。 |
|
|
|
06:10.490 --> 06:11.780 |
|
あ、 ごめん、 今のは走ったかな? |
|
|
|
06:11.780 --> 06:12.620 |
|
もう一度やってみよう。 |
|
|
|
06:12.650 --> 06:13.520 |
|
さあ、 始めよう。 |
|
|
|
06:14.810 --> 06:17.630 |
|
そして得られた答えがこれだ。 |
|
|
|
06:17.810 --> 06:27.770 |
|
ええと、 それで......もう一度、 やり直す必要がありそうなんだ。 |
|
|
|
06:27.770 --> 06:28.100 |
|
そんな。 |
|
|
|
06:28.100 --> 06:28.430 |
|
さあ、 始めよう。 |
|
|
|
06:28.460 --> 06:29.030 |
|
さあ、 始めよう。 |
|
|
|
06:29.030 --> 06:29.930 |
|
申し訳ない。 |
|
|
|
06:29.930 --> 06:35.360 |
|
これはGpgのバージョンだったので、 GPTは0だった。 2121. |
|
|
|
06:35.540 --> 06:38.510 |
|
そして、 ここで私は先を急いだ。 |
|
|
|
06:38.510 --> 06:39.470 |
|
だから混乱しているんだ。 |
|
|
|
06:39.470 --> 06:40.040 |
|
申し訳ない。 |
|
|
|
06:40.040 --> 06:41.720 |
|
もう一度上に戻ろう。 |
|
|
|
06:42.260 --> 06:55.410 |
|
ええと、 これはメモしておかないといけないね。 2131 は GPT バージョンで、 クロードのバージョンは 0 です。 2121. |
|
|
|
06:55.410 --> 06:58.500 |
|
だからクロードはGPTより少し速かった。 |
|
|
|
06:58.530 --> 07:02.340 |
|
でも、 これは誤差の範囲内なんだ。 |
|
|
|
07:02.340 --> 07:05.640 |
|
これを何度か実行すれば、 少なくともその程度の差は出るだろう。 |
|
|
|
07:05.640 --> 07:12.990 |
|
つまり、 基本的には両者とも、 マシン上で実行したときに同じスピードで動くコードを作ったということだ。 |
|
|
|
07:12.990 --> 07:19.140 |
|
私は、 実際にコンパイルされたマシンコードはどちらの場合も同じだと予想している。 |
|
|
|
07:19.290 --> 07:23.040 |
|
うーん、 かなり単純な問題だから、 そうなるんだろうね。 |
|
|
|
07:23.190 --> 07:33.540 |
|
GPT4もクロードも、 パイを生成するパイソンコードに最適化されたソリューションで、 それを打ち砕いたんだ。 |
|
|
|
07:33.870 --> 07:42.120 |
|
でも、 GPT4はクロードよりもう少しヒントが必要だったけど、 休憩を挟んで2人ともたどり着いた。 |
|
|
|
07:42.120 --> 07:48.300 |
|
もっと難しい問題、 もっと難しいコードに移行して、 彼らがどのように最適化できるかを見ていくつもりだ。 |
|
|
|
07:48.300 --> 07:50.220 |
|
また次のビデオで会おう。
|
|
|