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

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
また次のビデオで会おう。