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.
295 lines
10 KiB
295 lines
10 KiB
WEBVTT |
|
|
|
00:00.980 --> 00:09.290 |
|
私があなたと別れたとき、 私たちはPythonからCに変換するためのシンプルなユーザーインターフェイスを作ったばかりだった。 |
|
|
|
00:09.290 --> 00:11.000 |
|
私はこう言った。 |
|
|
|
00:11.000 --> 00:15.380 |
|
これをちゃんとしたプロトタイプUIにしよう。 |
|
|
|
00:15.380 --> 00:22.340 |
|
このJupyterノートブックに戻ったら、 もう少しメソッドを書いてみよう。 |
|
|
|
00:22.340 --> 00:31.100 |
|
まず第一に、 このPythonのテイク・コードの実行は、 ここでも同じように少し危険なことをしようとしている。 |
|
|
|
00:31.130 --> 00:32.510 |
|
そのコードを実行する。 |
|
|
|
00:32.510 --> 00:35.480 |
|
だから今回も、 この特別なプロトタイプは本当にあなたのためだけのものなんだ。 |
|
|
|
00:35.480 --> 00:42.200 |
|
もしこれを誰かと共有したら、 彼らはあなたのボックス上で直接Pythonコードを実行する方法を手に入れることになるからだ。 |
|
|
|
00:42.200 --> 00:43.370 |
|
それは悪いことだ。 |
|
|
|
00:43.370 --> 00:50.270 |
|
だから、 このグラディオのアプリでは、 シェアは常に虚偽であるべきなのだ。 |
|
|
|
00:50.360 --> 00:53.600 |
|
ええと、 でも、 あなたにとっては素晴らしいプロトタイプだよ。 |
|
|
|
00:53.960 --> 00:57.170 |
|
つまり、 このコードを実行するんだ。 |
|
|
|
00:57.170 --> 01:02.600 |
|
Pythonのコードから出力される標準出力をキャプチャして、 |
|
|
|
01:02.600 --> 01:15.030 |
|
それを返すことで、 コードを受け取って実行し、 gradioに表示するための出力を返す関数にしたいからだ。 |
|
|
|
01:15.030 --> 01:17.700 |
|
これがパイソンの実行だ。 |
|
|
|
01:17.910 --> 01:24.510 |
|
そして今度は、 Cプラス・プラス・ウムのコードを実行するための、 少し重いコードだ。 |
|
|
|
01:24.510 --> 01:31.260 |
|
それで、 最初にすることは、 少し前に書いた関数を呼び出して、 実際に最適化されたファイルに書き出すことだ。 |
|
|
|
01:31.590 --> 01:39.330 |
|
それから、 コンパイルコマンドを実行するんだ。 |
|
|
|
01:39.360 --> 01:48.180 |
|
私はサブプロセスのドットランというものを使っている。 これは、 何かを実行するためにサブプロセスをスポーンさせる方法だ。 |
|
|
|
01:48.480 --> 01:49.920 |
|
それが僕の仕事なんだ。 |
|
|
|
01:49.920 --> 01:53.370 |
|
さて、 以前より少し長くなっていることにお気づきだろうか。 |
|
|
|
01:53.370 --> 01:59.520 |
|
これは、 コードが私のコンピュータに最適化されていることを確認するために、 |
|
|
|
01:59.520 --> 02:02.430 |
|
すべてのフラグを使用するものです。 |
|
|
|
02:02.430 --> 02:06.750 |
|
このようなことを知り尽くしている人たちにとっては、 ほとんど表面をなぞるようなものだ。 |
|
|
|
02:06.760 --> 02:11.050 |
|
追加できるフラッグは山ほどある。 |
|
|
|
02:11.080 --> 02:16.000 |
|
しばらくして、 これで十分だと思ったので、 そのためのフラッグをたくさん入れた。 |
|
|
|
02:16.150 --> 02:28.720 |
|
そして、 最適化されたプログラムを実行し、 標準出力をキャプチャしてそれを返す。 |
|
|
|
02:28.750 --> 02:30.970 |
|
エラーがあれば標準エラーを返す。 |
|
|
|
02:31.210 --> 02:38.140 |
|
これが、 Cプラス・プラス・コードを実行し、 レスポンスを返す方法である。 |
|
|
|
02:38.140 --> 02:41.200 |
|
本当はコンパイルして実行した方が正確なんだけどね。 |
|
|
|
02:41.470 --> 02:50.440 |
|
ここではCSSの文字列を少し使っている。 |
|
|
|
02:50.440 --> 02:53.740 |
|
そして、 これがユーザーインターフェースの範囲であり、 すべてである。 |
|
|
|
02:53.740 --> 02:55.240 |
|
もうコーディングはしない。 |
|
|
|
02:55.240 --> 02:55.990 |
|
ただこれだけだ。 |
|
|
|
02:55.990 --> 03:02.410 |
|
GRブロックを使っていますが、 これはGradioの下位APIで、 |
|
|
|
03:02.410 --> 03:09.070 |
|
ユーザーインターフェースの柔軟性を高めることができます。 |
|
|
|
03:09.280 --> 03:12.770 |
|
自分のCSSを渡すこともできる。 |
|
|
|
03:12.800 --> 03:15.140 |
|
CSSはこの変数に等しい。 |
|
|
|
03:15.320 --> 03:18.740 |
|
それで、 もう少しカスタマイズできるんだ。 |
|
|
|
03:18.860 --> 03:22.100 |
|
このドットマークダウンは、 トップに素敵な見出しをつけてくれる。 |
|
|
|
03:22.100 --> 03:26.510 |
|
そして、 ウィジェットが1列、 2列、 3列、 4列、 5列と並んでいる。 |
|
|
|
03:26.690 --> 03:30.110 |
|
あの......PythonのコードとCプラスアルファのコードはわかると思う。 |
|
|
|
03:30.110 --> 03:35.000 |
|
デフォルト値を円周率コードに設定する前は、 まさにそうだった。 |
|
|
|
03:35.510 --> 03:39.800 |
|
ええと、 これは前と同じで、 GPTかClaudeを選ぶドロップダウンです。 |
|
|
|
03:40.040 --> 03:42.680 |
|
コードを変換するボタンだ。 |
|
|
|
03:42.680 --> 03:45.050 |
|
それからもういくつかボタンがある。 |
|
|
|
03:45.050 --> 03:51.770 |
|
Pythonの実行はPythonを、 CPの実行はC plus plusを実行する。 |
|
|
|
03:51.770 --> 03:58.580 |
|
そして、 Pythonの出力CPをCプラスプラス出力のためにPythonのアウトを持っている。 |
|
|
|
03:58.610 --> 04:03.650 |
|
もしそうでなければ、 ユーザーインターフェイスをご覧になれば、 すべてが明らかになるでしょう。 |
|
|
|
04:03.650 --> 04:07.580 |
|
そして、 これを振り返って、 ワオ、 これはとてもシンプルだと言うだろう。 |
|
|
|
04:08.000 --> 04:13.000 |
|
変換、 Python実行、 Cプラスプラス実行の3つのボタンがあります。 |
|
|
|
04:13.000 --> 04:16.600 |
|
では、 この3つのボタンのどれかをクリックしたらどうなるのか? |
|
|
|
04:16.630 --> 04:19.120 |
|
変換ボタンを押しても以前と同じだ。 |
|
|
|
04:19.120 --> 04:25.810 |
|
optimizeメソッド関数を実行し、 入力、 Pythonコード、 モデルを渡す。 |
|
|
|
04:25.840 --> 04:30.640 |
|
出力はC++のコードになるので、 変換を押すとPythonのコードが出力される。 |
|
|
|
04:30.640 --> 04:35.290 |
|
モデルを使って変換し、 それをCプラスプラスに入れる。 |
|
|
|
04:35.500 --> 04:42.910 |
|
Pythonの実行ボタンを押すと、 PythonコードをPythonに出力してPythonを実行する。 |
|
|
|
04:42.940 --> 04:49.270 |
|
Cプラスプラス実行を押すと、 Cプラスプラスの入力でCプラスプラスのコードが実行される。 |
|
|
|
04:49.300 --> 04:51.310 |
|
Cプラスプラス出力。 |
|
|
|
04:51.610 --> 04:53.140 |
|
それだけだ。 |
|
|
|
04:53.170 --> 05:00.850 |
|
もしそれが、 あー、 たくさんのスパゲッティみたいなものに聞こえたとしたら、 それは、 きれいに解けて、 |
|
|
|
05:00.880 --> 05:04.510 |
|
これから見るものを見れば超明確になる。 |
|
|
|
05:04.780 --> 05:06.520 |
|
ええと、 これを実行しよう。 |
|
|
|
05:06.550 --> 05:08.470 |
|
これがユーザー・インターフェースだ。 |
|
|
|
05:08.470 --> 05:11.080 |
|
よりカラフルなユーザーインターフェースへようこそ。 |
|
|
|
05:11.290 --> 05:14.830 |
|
ここにはPythonのコードとC++のコードがある。 |
|
|
|
05:14.830 --> 05:20.600 |
|
そして、 モデル変換コードを選択し、 Pythonを実行し、 Cプラスプラスを実行することができる。 |
|
|
|
05:20.600 --> 05:22.100 |
|
では、 始めよう。 |
|
|
|
05:22.100 --> 05:25.640 |
|
ここでPythonの実行を押して、 このコードを実行することができる。 |
|
|
|
05:25.790 --> 05:28.520 |
|
このユーザー・インターフェイスから。 |
|
|
|
05:28.550 --> 05:31.460 |
|
今まさにそのメソッドを呼び出している。 |
|
|
|
05:31.460 --> 05:33.530 |
|
その結果がここにある。 |
|
|
|
05:33.680 --> 05:35.060 |
|
あ、 あった。 |
|
|
|
05:35.210 --> 05:37.640 |
|
確かに円周率はある。 |
|
|
|
05:37.640 --> 05:39.890 |
|
そして8人かかった。 4秒。 |
|
|
|
05:40.070 --> 05:45.950 |
|
そして、 Cプラスに変換する。 |
|
|
|
05:45.950 --> 05:46.670 |
|
それに |
|
|
|
05:46.820 --> 05:47.930 |
|
これだ。 |
|
|
|
05:47.960 --> 05:50.930 |
|
そして、 Cプラスプラスを走らせることができるようになった。 |
|
|
|
05:51.800 --> 05:55.550 |
|
これでCプラス・プラスだ。 |
|
|
|
05:55.550 --> 06:00.890 |
|
私の記憶が正しければ、 約0だった以前よりかなり速くなっているのがわかるだろう。 2秒。 |
|
|
|
06:00.920 --> 06:08.090 |
|
それは、 このコードを最適化するための追加フラグがあるからなんだ。 |
|
|
|
06:08.120 --> 06:15.410 |
|
それで、 2つの実装の間で100倍以上速くなったことがわかるだろう。 |
|
|
|
06:15.410 --> 06:24.270 |
|
そして、 ループするような数学的なコードでは、 通常、 C+++のネイティブ・コンパイルの方が、 |
|
|
|
06:24.300 --> 06:30.450 |
|
少なくとも100倍は速くなると予想される。 |
|
|
|
06:30.450 --> 06:33.690 |
|
だから、 それほど驚くような結果ではないが、 良い結果だ。 |
|
|
|
06:33.960 --> 06:41.550 |
|
ええと、 もちろん、 数字は、 ええと、 ほんの少しずれているんだけど、 それはたぶん、 浮動小数点の丸め方のせいだと思う。 |
|
|
|
06:41.550 --> 06:43.980 |
|
クロードの様子を見て、 確認しよう。 |
|
|
|
06:46.830 --> 06:50.460 |
|
そして、 クロードのCプラスプラスのコードを実行してみよう。 |
|
|
|
06:50.760 --> 06:53.520 |
|
もちろん、 とてもよく似ている。 |
|
|
|
06:53.520 --> 06:58.350 |
|
同じ番号、 同じように超高速。 |
|
|
|
06:58.500 --> 07:07.260 |
|
その結果、 非常によく似た......C+++のコードが生成され、 それが同じマシンコードにコンパイルされているのだと思う。 |
|
|
|
07:07.530 --> 07:08.400 |
|
分かった。 |
|
|
|
07:08.400 --> 07:14.850 |
|
もう1つ、 次のビデオに移ってから、 ここを通してハードな問題に取り組むことになる。 |
|
|
|
07:14.850 --> 07:17.730 |
|
ええと、 それで今日は終わりにしよう。 |
|
|
|
07:17.730 --> 07:19.620 |
|
僕と同じように楽しんでもらえたら嬉しい。 |
|
|
|
07:19.650 --> 07:21.780 |
|
これは素晴らしい小さな製品だ。 |
|
|
|
07:21.810 --> 07:22.770 |
|
すぐに会おう。
|
|
|