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.
502 lines
17 KiB
502 lines
17 KiB
WEBVTT |
|
|
|
00:00.950 --> 00:05.600 |
|
Colabへようこそ、 そして我々のビジネスプロジェクトへようこそ。 |
|
|
|
00:05.600 --> 00:12.500 |
|
というわけで、 今回もオーディオファイルをもとに議事録を作成することになった。 |
|
|
|
00:12.620 --> 00:15.620 |
|
それで、 とても役に立つデータを見つけたんだ。 |
|
|
|
00:15.620 --> 00:19.610 |
|
完璧なデータセットを用意してくれるのは、 典型的な抱きつき顔だ。 |
|
|
|
00:19.790 --> 00:25.760 |
|
ミーティング・バンクと呼ばれるデータセットで、 |
|
|
|
00:25.790 --> 00:31.250 |
|
これはかなり有名なデータセットらしい。 |
|
|
|
00:31.460 --> 00:32.990 |
|
それで、 これを使っているんだ。 |
|
|
|
00:32.990 --> 00:43.730 |
|
あるデンバー市議会の会議をダウンロードし、 その一部を10分間撮影した。 |
|
|
|
00:43.730 --> 00:46.550 |
|
ええと、 10分だったか、 20分だったか、 そのどちらかだ。 |
|
|
|
00:46.640 --> 00:54.890 |
|
とにかく、 その音声をカットしてグーグルドライブに保存したんだ。 僕がここで考えているのは、 この製品でグーグルドライブにあるもの、 |
|
|
|
00:54.890 --> 00:59.690 |
|
あるいは会社のために作るのであれば会社のドライブにあるものを何でも取り込んで、 |
|
|
|
00:59.690 --> 01:06.150 |
|
それを使って議事録を作成できるようにしたいんだ。 |
|
|
|
01:06.150 --> 01:13.800 |
|
このプロジェクトの一環として、 ちょっとしたサイドバーとして、 Google DriveからColabを読み込む方法も紹介しよう。 |
|
|
|
01:13.800 --> 01:23.850 |
|
では、 ピップ・インストールのインポートについて、 いつものように説明しよう。 |
|
|
|
01:23.850 --> 01:29.250 |
|
このラボにもOpenAIをインストールすることになる。 |
|
|
|
01:29.250 --> 01:34.170 |
|
ハグフェイスだけじゃなくて、 ハグフェイスのパッケージをたくさん使っているんだ。 |
|
|
|
01:34.170 --> 01:37.140 |
|
そしてOpenAIのライブラリも。 |
|
|
|
01:37.230 --> 01:44.730 |
|
OpenAIのインポートも含め、 あらゆるものをインポートしている。 |
|
|
|
01:45.000 --> 01:47.370 |
|
それから、 いくつかの定数を設定します。 |
|
|
|
01:47.370 --> 01:52.020 |
|
私たちはウィスパーと呼ばれるオーディオモデルを使うつもりです。 |
|
|
|
01:52.020 --> 01:55.530 |
|
以前、 君にこの任務を与えたときだ。 |
|
|
|
01:55.710 --> 02:01.770 |
|
それからこれがラマ3だ。 180億ドルのインストラクター・モデルも使用する予定だ。 |
|
|
|
02:01.890 --> 02:08.010 |
|
これが、 これから学ぶ新しい能力だ。 |
|
|
|
02:08.040 --> 02:09.660 |
|
今日もちょっとおまけ。 |
|
|
|
02:09.690 --> 02:13.080 |
|
これがColabをGoogle Driveに接続する方法です。 |
|
|
|
02:13.110 --> 02:14.280 |
|
超シンプルだ。 |
|
|
|
02:14.310 --> 02:16.140 |
|
しかも、 ただのドライブドットマウントだ。 |
|
|
|
02:16.140 --> 02:19.260 |
|
そして、 どこに行きたいかを伝える。 |
|
|
|
02:19.290 --> 02:20.220 |
|
ドライブをマウントする。 |
|
|
|
02:20.220 --> 02:21.720 |
|
基本的にはそれだけだ。 |
|
|
|
02:21.720 --> 02:25.740 |
|
そして、 自分のドライブの範囲内ということを自分に課している。 |
|
|
|
02:25.800 --> 02:33.480 |
|
LMSというフォルダの中にデンバー・エクストラクト・ドットmp3というのがあって、 |
|
|
|
02:33.480 --> 02:43.080 |
|
これがデンバー市議会の10分から20分の間のセグメントをMP3で録音したものです。 |
|
|
|
02:43.110 --> 02:51.900 |
|
これを実行すると、 ポップアップで「Googleに接続しています。 |
|
|
|
02:51.930 --> 02:55.980 |
|
2回目の実行ですが、 最初に実行したときは、 もちろん認証がポップアップ表示され、 |
|
|
|
02:55.980 --> 03:02.680 |
|
Googleアカウントでログインしていることを確認し、 アクセスを許可するよう選択されました。 |
|
|
|
03:02.680 --> 03:05.860 |
|
今回はすでにそこに装着されていると言っている。 |
|
|
|
03:05.980 --> 03:13.780 |
|
ここのフォルダに行けば、 Googleドライブにアクセスして、 スラッシュ・コンテンツ・スラッシュ・ドライブの下にあるすべてのファイルを見ることができる。 |
|
|
|
03:14.410 --> 03:18.040 |
|
そこでHuggingfaceのハブにサインインする。 |
|
|
|
03:18.760 --> 03:19.300 |
|
さあ、 始めよう。 |
|
|
|
03:19.330 --> 03:20.620 |
|
ログインに成功しました。 |
|
|
|
03:20.620 --> 03:23.380 |
|
そしてOpenAIにもサインインする。 |
|
|
|
03:23.410 --> 03:25.690 |
|
だから、 これはとても似ている。 |
|
|
|
03:25.690 --> 03:33.340 |
|
OpenAIのキーを取得します。 このコラボの秘密の中にOpenAIのキーを設定しました。 |
|
|
|
03:33.580 --> 03:43.810 |
|
そして、 そのキーを取得し、 通常のOpenAIのコンストラクタを呼び出して、 インターフェースの接続を確立します。 |
|
|
|
03:43.810 --> 03:48.820 |
|
しかし今回は、 OpenAIのAPIキーを渡している。 |
|
|
|
03:49.000 --> 03:55.630 |
|
過去には、 環境変数が設定されていることに頼っていたので、 これを指定する必要がなかったのを覚えているだろう。 |
|
|
|
03:55.660 --> 03:58.570 |
|
今回は明確にパスする。 |
|
|
|
03:58.630 --> 04:00.010 |
|
そうだ。 |
|
|
|
04:00.250 --> 04:04.570 |
|
これでOpenAIの接続が確立した。 |
|
|
|
04:04.870 --> 04:06.790 |
|
それからどうすればいいんだ? |
|
|
|
04:06.790 --> 04:14.290 |
|
グーグルドライブにあるこの音声ファイルを、 このコラボにマッピングしておこうと思う。 |
|
|
|
04:14.290 --> 04:18.010 |
|
そしてOpenAI dot audioを呼び出す。 |
|
|
|
04:18.010 --> 04:24.790 |
|
ドット転写ドット作成は、 私たちが使ってきた他のOpenAI APIのメソッドと非常によく似ています。 |
|
|
|
04:24.820 --> 04:30.130 |
|
特に、 私たちが実際に作り、 喋らせ、 音声を発生させたときのものと似ている。 |
|
|
|
04:30.340 --> 04:37.150 |
|
モデル名、 ウィスパー・ワン・モデル、 ファイル名、 そしてレスポンスをテキストで表示することを入力した。 |
|
|
|
04:37.150 --> 04:42.760 |
|
そして、 OpenAIのウィスパーモデルから返ってきたものをプリントする。 |
|
|
|
04:42.760 --> 04:49.870 |
|
つまり、 フロンティア・モデルと呼ばれる音声の束が提供され、 あるいは今話しているように音声の束が提供され、 |
|
|
|
04:49.900 --> 05:01.690 |
|
現在その会議の書き起こしが戻ってくるのを待っているところです。 |
|
|
|
05:02.590 --> 05:03.700 |
|
まあ、 それは起こっている。 |
|
|
|
05:03.700 --> 05:07.030 |
|
他のことを先に進めるように、 このまま続けるつもりだ。 |
|
|
|
05:07.030 --> 05:07.960 |
|
私は走らなければならない。 |
|
|
|
05:07.960 --> 05:16.630 |
|
システムプロンプト、 システムメッセージ、 ユーザープロンプトのシステムメッセージがある。 |
|
|
|
05:16.630 --> 05:22.120 |
|
あなたは、 議事録から要約、 主要な論点、 |
|
|
|
05:22.120 --> 05:36.430 |
|
要点、 行動項目をマークダウンした所有者を含む議事録を作成するアシスタントです。 |
|
|
|
05:36.490 --> 05:36.910 |
|
それでいい。 |
|
|
|
05:36.940 --> 05:39.520 |
|
僕の英語は下手だと思ったけど、 大丈夫だよ。 |
|
|
|
05:39.550 --> 05:41.680 |
|
その他のデンバー評議会 |
|
|
|
05:41.680 --> 05:46.750 |
|
議事録は、 出席者、 場所、 日付、 ディスカッションのポイント、 持ち帰り事項、 所有者を記したアクションアイテムなどのサマリーを含めて、 |
|
|
|
05:46.750 --> 05:48.790 |
|
マークダウンで作成してください。 |
|
|
|
05:48.790 --> 05:54.640 |
|
そして、 そのユーザープロンプトの直後にミーティングの記録を押し込む。 |
|
|
|
05:54.820 --> 05:56.560 |
|
以下はその記録である。 |
|
|
|
05:56.590 --> 06:00.440 |
|
ちょうどプリントアウトしたところで、 長い古い記録なんだ。 |
|
|
|
06:00.440 --> 06:02.960 |
|
デンバー市議会。 |
|
|
|
06:02.990 --> 06:11.540 |
|
かなり長い時間話し込んだが、 その多くは、 今度の連邦祝日である先住民の日についてだった。 |
|
|
|
06:11.780 --> 06:19.130 |
|
そして、 先住民の日を議会がどのように認識するのが正しいかについても議論があった。 |
|
|
|
06:19.130 --> 06:24.050 |
|
この文章をすべて読み通すか、 あるいは音声を聴いてみてほしい。 |
|
|
|
06:24.050 --> 06:30.140 |
|
つまり、 これはすべてこの転写変数にテキストで入っている。 |
|
|
|
06:30.230 --> 06:31.760 |
|
そこで私たちはオーディオから始めた。 |
|
|
|
06:31.790 --> 06:36.050 |
|
OpenAIのウィスパー・ワン・モデルのおかげで、 テキストが使えるようになった。 |
|
|
|
06:36.260 --> 06:40.100 |
|
システムプロンプトとユーザープロンプトを作成する。 |
|
|
|
06:40.130 --> 06:41.960 |
|
見慣れた光景だろう。 |
|
|
|
06:41.960 --> 06:44.000 |
|
これがクオンツのコンフィグだ。 |
|
|
|
06:44.000 --> 06:45.950 |
|
また量子化することになる。 |
|
|
|
06:45.980 --> 06:46.490 |
|
なぜだ。 |
|
|
|
06:46.520 --> 06:55.790 |
|
ラムダ3では非常に効果的だった。 メモリが55まで大幅に減少する前に、 1. 5ギガバイト。 |
|
|
|
06:56.060 --> 06:57.320 |
|
しかし、 そうはならなかった。 |
|
|
|
06:57.350 --> 06:59.510 |
|
少なくとも、 彼のパフォーマンスは私たちには完璧に見えた。 |
|
|
|
06:59.510 --> 07:03.410 |
|
もしかしたら、 量子化せずに試してみて、 どれだけジョークがうまくなったか確かめたのかもしれない。 |
|
|
|
07:03.590 --> 07:03.950 |
|
うーん。 |
|
|
|
07:03.980 --> 07:06.830 |
|
大差なくても驚かないよ。 |
|
|
|
07:06.860 --> 07:08.990 |
|
量子化は非常に効果的だ。 |
|
|
|
07:09.320 --> 07:12.890 |
|
よし、 アクションの時間だ。 |
|
|
|
07:12.980 --> 07:17.990 |
|
これは前回もやったことなので、 皆さんもよくご存知のはずだ。 |
|
|
|
07:17.990 --> 07:26.360 |
|
自動トークナイザーFrompretrainedメソッドを使用して、 Lama用のトークナイザーを作成します。 |
|
|
|
07:26.360 --> 07:30.410 |
|
パッド・トークンをセットする作業は、 これまでと同じように行う。 |
|
|
|
07:30.560 --> 07:35.900 |
|
次に、 apply chat template functionメソッドを呼び出します。 |
|
|
|
07:35.900 --> 07:39.950 |
|
メッセージで伝える......これだ。 |
|
|
|
07:39.980 --> 07:41.090 |
|
私たちはそれをパスしている。 |
|
|
|
07:41.090 --> 07:43.790 |
|
もちろん、 これには全記録が含まれる。 |
|
|
|
07:43.820 --> 07:47.090 |
|
会議全体のテキストとユーザーによるプロンプトが含まれる。 |
|
|
|
07:47.120 --> 07:51.350 |
|
そして、 その大量のテキストをGPUに載せるのだ。 |
|
|
|
07:51.410 --> 07:53.270 |
|
またストリーミングするつもりだ。 |
|
|
|
07:53.270 --> 07:55.790 |
|
そこで、 このテキスト・ストリーム・オブジェクトを使う。 |
|
|
|
07:55.790 --> 07:57.800 |
|
そして、 こうだ。 |
|
|
|
07:57.830 --> 07:58.400 |
|
これがそうだ。 |
|
|
|
07:58.400 --> 08:00.710 |
|
これがモデルを作るときだ。 |
|
|
|
08:00.710 --> 08:03.080 |
|
我々は、 因果関係エルムの自動モデルを作成する。 |
|
|
|
08:03.080 --> 08:06.680 |
|
ラマのモデル名を渡す。 |
|
|
|
08:06.680 --> 08:10.070 |
|
GPUがあれば使ってください。 |
|
|
|
08:10.220 --> 08:13.760 |
|
T4ボックス(小型GPUボックス)を使っている。 |
|
|
|
08:13.760 --> 08:17.150 |
|
そして量子化コンフィグを渡す。 |
|
|
|
08:17.450 --> 08:20.480 |
|
しばらく時間がかかるだろうから、 今から走り始めるつもりだ。 |
|
|
|
08:20.480 --> 08:22.820 |
|
話す前に走り出すべきだった。 |
|
|
|
08:23.000 --> 08:24.770 |
|
その方がスマートだ。 |
|
|
|
08:24.950 --> 08:26.090 |
|
ええと......。 |
|
|
|
08:26.090 --> 08:33.410 |
|
そしてモデルを作成し、 アクションを実行する。 |
|
|
|
08:33.440 --> 08:37.610 |
|
アクションはモデルのジェネレートを呼び出すことである。 |
|
|
|
08:37.610 --> 08:48.830 |
|
generateを呼び出すときには、 もちろん、 トークン化されたプロンプトとトランスクリプト全体を入力として渡さなければならない。 |
|
|
|
08:49.070 --> 08:51.770 |
|
これは、 あなたが以前使っていたものより少し大きい。 |
|
|
|
08:51.770 --> 08:54.110 |
|
以前は新規トークンの上限は80枚だと言っていた。 |
|
|
|
08:54.140 --> 09:00.560 |
|
現在、 新規トークンの上限を2000としているのは、 かなりの反響がある可能性があるからだ。 |
|
|
|
09:00.830 --> 09:07.940 |
|
ええと、 それで、 ええと、 会議の議事録を取り戻すには十分なスペースが必要なんだ。 |
|
|
|
09:07.940 --> 09:17.270 |
|
そして、 ストリーマーを提供し、 そのストリーマーが結果を私たちのラボにストリームバックできることを伝えている。 |
|
|
|
09:17.780 --> 09:25.550 |
|
少し考え込んでいる間に、 次に何が起こるかと言うと、 会議の議事録をここに流すんだ。 |
|
|
|
09:25.790 --> 09:36.260 |
|
ええと、 その後、 私たちができることは、 出力を取ってテキストを取得することです。 |
|
|
|
09:36.500 --> 09:41.540 |
|
そして、 それをトークナイザー・ドット・デコードを使ってデコードする。 |
|
|
|
09:41.840 --> 09:45.380 |
|
それをresponseという変数に入れるんだ。 |
|
|
|
09:45.380 --> 09:46.790 |
|
さて、 議事録だ。 |
|
|
|
09:47.150 --> 09:47.960 |
|
うーん。 |
|
|
|
09:52.430 --> 09:53.600 |
|
もうすぐだ。 |
|
|
|
09:53.600 --> 09:54.770 |
|
これまでのところだ。 |
|
|
|
09:54.770 --> 09:56.690 |
|
を置くだけだ。 |
|
|
|
09:57.750 --> 09:59.520 |
|
その記録である。 |
|
|
|
10:04.170 --> 10:11.370 |
|
デンバー市議会10月9日(月)の議事録と出席者。 |
|
|
|
10:12.930 --> 10:14.100 |
|
概要 |
|
|
|
10:19.380 --> 10:25.530 |
|
彼らは10月9日(月)に会合を開き、 先住民の日の宣言を討議し採択した。 |
|
|
|
10:25.560 --> 10:28.320 |
|
ロペス議員が宣言を発表した。 |
|
|
|
10:28.410 --> 10:29.970 |
|
主な論点 |
|
|
|
10:30.000 --> 10:31.050 |
|
収穫。 |
|
|
|
10:31.050 --> 10:34.140 |
|
この日の重要性を認識して採択された。 |
|
|
|
10:34.170 --> 10:37.590 |
|
彼らは、 包括性とあらゆる文化を尊重することの重要性を強調した。 |
|
|
|
10:37.620 --> 10:41.250 |
|
オーナーと行動 |
|
|
|
10:41.250 --> 10:44.370 |
|
ロペス議員と事務員 |
|
|
|
10:44.520 --> 10:49.890 |
|
書記官は、 この宣言にデンバー市およびデンバー議会の印章を押印する。 |
|
|
|
10:49.890 --> 10:57.330 |
|
そして、 ロペス議員がデンバー・アメリカン・インディアン委員会とその他の地域に宣言のコピーを送付し、 |
|
|
|
10:57.330 --> 11:03.420 |
|
最後に次のステップを紹介する。 |
|
|
|
11:03.420 --> 11:06.960 |
|
だから、 ラマ3世には敬意を表したい。 1. |
|
|
|
11:06.960 --> 11:13.230 |
|
この議事録は、 出席者、 日付、 形式、 セクションがすべて揃った、 |
|
|
|
11:13.230 --> 11:20.100 |
|
非常に包括的で、 明確で、 徹底した議事録のようだ。 |
|
|
|
11:20.130 --> 11:24.510 |
|
もちろん、 マークダウン形式であることにお気づきだろう。 |
|
|
|
11:24.510 --> 11:30.330 |
|
そして、 以前Jupyter Notebookでフロンティアモデルをローカルで扱ったときに、 |
|
|
|
11:30.330 --> 11:39.360 |
|
Colabでマークダウンを表示する方法として、 このディスプレイマークダウンレスポンスが使えることをご存知でしょう。 |
|
|
|
11:39.360 --> 11:47.310 |
|
そしてここに、 デンバー市議会の議事録があり、 要約、 要点、 行動項目、 次のステップなど、 |
|
|
|
11:47.310 --> 11:53.310 |
|
さまざまなセクションに整理されている。 |
|
|
|
11:53.490 --> 12:07.660 |
|
そこで、 フロンティアモデルとオープンソースモデルを使って、 音声を取り込み、 それをトランスクリプトに変換し、 そのトランスクリプトをアクションと次のステップを含むミーティングの要約に変換するアプリケーションを紹介しよう。 |
|
|
|
12:09.160 --> 12:11.620 |
|
さて、 あなたには明らかな練習がある。 |
|
|
|
12:11.620 --> 12:13.900 |
|
もうおわかりいただけただろうか。 |
|
|
|
12:13.900 --> 12:17.950 |
|
それを素敵なユーザーインターフェイスに落とし込むのは簡単だ。 |
|
|
|
12:17.950 --> 12:27.370 |
|
Gradioは、 前の週と同じように使うことができる。 |
|
|
|
12:27.370 --> 12:32.590 |
|
グーグル・ドライブ上のファイル名を入力し、 「議事録の作成」を押せばいい。 |
|
|
|
12:32.620 --> 12:41.200 |
|
その音声を読み込んでテキストに変換し、 会議の議事録、 持ち帰り事項、 次のステップに変換する。 |
|
|
|
12:41.800 --> 12:43.570 |
|
それがあなたにとっての課題です。 |
|
|
|
12:43.570 --> 12:45.640 |
|
そうしてくれ。 |
|
|
|
12:45.640 --> 12:49.270 |
|
そして、 素晴らしいユーザー・インターフェースを見るのが待ちきれない。 |
|
|
|
12:49.270 --> 12:51.730 |
|
コードを入手したら、 ぜひプッシュしてほしい。 |
|
|
|
12:51.730 --> 12:56.470 |
|
また次の講義でお会いしましょう。
|
|
|