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.
430 lines
15 KiB
430 lines
15 KiB
WEBVTT |
|
|
|
00:00.110 --> 00:05.750 |
|
最初のプロジェクトで即座に満足できると言ったのは100年前のビデオのような気がするし、 |
|
|
|
00:05.750 --> 00:13.070 |
|
即座に満足できたとは言えないと感じるのも当然だろう。 |
|
|
|
00:13.070 --> 00:17.960 |
|
しかし、 心配は無用だ。 その埋め合わせとして、 素晴らしいジューシーなプロジェクトでスタートを切るつもりだ。 |
|
|
|
00:17.960 --> 00:23.960 |
|
もしすでにJupyterLabをブラウザのウィンドウのように起動している場合は、 それを閉じてください。 |
|
|
|
00:23.960 --> 00:32.180 |
|
また、 Anacondaのプロンプトがすでにウィンドウズに表示されている場合は、 それを終了して閉じ、 もう一度やり直してください。 |
|
|
|
00:32.180 --> 00:44.660 |
|
PCでは新しいAnacondaプロンプトを、 Macでは新しいターミナルを立ち上げる。 |
|
|
|
00:44.690 --> 00:49.850 |
|
LMエンジニアリングのプロジェクトフォルダーに入れば、 まず思い出すだろう。 |
|
|
|
00:49.850 --> 00:54.710 |
|
そして、 Jupyter Labを起動しているいないにかかわらず、 conda activate LMSと入力し、 |
|
|
|
00:54.710 --> 00:57.800 |
|
新しい状態でログインした場合は、 常にこの作業を行う必要がある。 |
|
|
|
00:57.800 --> 01:00.080 |
|
そうやって環境を活性化させるのだ。 |
|
|
|
01:00.110 --> 01:04.830 |
|
もしvirtualenvを使っているのであれば、 ReadmeにPCとMacで違うやり方が載っていた。 |
|
|
|
01:04.860 --> 01:10.290 |
|
そうしたら、 プロンプトがLMSに変わったんだ。 |
|
|
|
01:10.290 --> 01:14.100 |
|
アナコンダ・プロンプトのウィンドウズ・ユーザーも同じことをするはずだ。 |
|
|
|
01:14.100 --> 01:17.670 |
|
そして今、 Jupyter Labという2つの素晴らしい言葉を入力する。 |
|
|
|
01:17.670 --> 01:23.670 |
|
そうすると、 一瞬考えて、 JupyterLabがここに出てくる。 |
|
|
|
01:23.700 --> 01:25.350 |
|
即座に満足できる。 |
|
|
|
01:25.350 --> 01:26.130 |
|
と書いてある。 |
|
|
|
01:26.130 --> 01:28.500 |
|
だから、 あなたはこれを見ないかもしれない。 |
|
|
|
01:28.530 --> 01:31.320 |
|
実際、 このように見えるだけで、 初めて出てくるかもしれない。 |
|
|
|
01:31.320 --> 01:34.560 |
|
もしかしたら、 この方が今見ているものに近いかもしれない。 |
|
|
|
01:34.620 --> 01:37.380 |
|
つまり、 これはある人々にとってのJupyter Labなのだ。 |
|
|
|
01:37.380 --> 01:38.610 |
|
これは古いニュースだ。 |
|
|
|
01:38.610 --> 01:39.870 |
|
これはよく使うだろう。 |
|
|
|
01:39.900 --> 01:41.370 |
|
初めて聞く人もいるかもしれない。 |
|
|
|
01:41.370 --> 01:43.920 |
|
そして、 その素晴らしさをお伝えしたい。 |
|
|
|
01:43.950 --> 01:49.080 |
|
データサイエンティストがコードを使って作業するための、 非常にインタラクティブな方法である。 |
|
|
|
01:49.290 --> 01:54.210 |
|
Jupyter Labでグローバル変数を多用するような、 毛むくじゃらのものばかりだ。 |
|
|
|
01:54.240 --> 02:02.340 |
|
エンジニア出身者であれば、 それがあまり良い振る舞いでないことは分かっているはずだが、 研究開発の一環として行っていることなのだ。 |
|
|
|
02:02.340 --> 02:03.780 |
|
だから、 そうするんだ。 |
|
|
|
02:03.780 --> 02:07.900 |
|
おわかりのように、 これは実験しながら非常に生産的になれることを意味する。 |
|
|
|
02:07.900 --> 02:19.510 |
|
コースの最後となる第8週目では、 プロダクション化、 つまりJupyterLabから適切なコードやデプロイメントに移行する方法について説明します。 |
|
|
|
02:19.510 --> 02:21.550 |
|
でも、 今はそんなことを心配する必要はない。 |
|
|
|
02:21.580 --> 02:27.250 |
|
左側にはファイル・ブラウザーと呼ばれるものがあり、 |
|
|
|
02:27.280 --> 02:32.230 |
|
このように親ディレクトリが表示されます。 |
|
|
|
02:32.230 --> 02:40.120 |
|
これから進む各週のディレクトリがあり、 Readmeや環境についてわかっていることを見ることができる。 |
|
|
|
02:40.120 --> 02:40.120 |
|
ymlもここにある。 |
|
|
|
02:40.120 --> 02:43.960 |
|
では、 さっそく第1週に入る。 |
|
|
|
02:44.200 --> 02:52.330 |
|
JupyterLabが初めての方は、 JupyterLabのガイドを作りましたので、 そちらをご覧ください。 |
|
|
|
02:52.330 --> 02:59.830 |
|
ここをダブルクリックするだけで、 必要なことを簡単に説明してくれる。 |
|
|
|
02:59.830 --> 03:04.600 |
|
例えば、 セルと呼ばれるこのボックスの一つをクリックできることを学ぶだろう。 |
|
|
|
03:04.600 --> 03:05.890 |
|
シフトを押し続ける。 |
|
|
|
03:05.890 --> 03:12.130 |
|
キーボードのリターンキーを押すかエンターキーを押せば実行され、 |
|
|
|
03:12.130 --> 03:20.170 |
|
結果が表示される。 |
|
|
|
03:20.200 --> 03:27.130 |
|
私の好きな果物はバナナです。 ジュピター・ラボの使い方のコツを学ぶ方法として、 このジュピター・ガイドに目を通していただき、 |
|
|
|
03:27.130 --> 03:31.270 |
|
役立てていただければ幸いです。 |
|
|
|
03:31.270 --> 03:40.420 |
|
しかし、 このコースの参加者の多くは、 一度や二度はジュピターを使ったことがあり、 その素晴らしさを熟知していることだろう。 |
|
|
|
03:40.810 --> 03:45.280 |
|
それで、 初日のプロジェクトがここにある。 |
|
|
|
03:45.280 --> 03:48.640 |
|
そしてまた、 私は少し生意気にも、 それをインスタント・グラティフィケーションと呼んでいる。 |
|
|
|
03:48.640 --> 03:54.670 |
|
あなたがこのためにかなりの労力を費やしてきたことは知っているし、 初日はかなり長い一日だった。 |
|
|
|
03:54.880 --> 04:00.340 |
|
ええと、 ここでもう一度、 私が助けに来たことを思い出してもらうために、 何か挨拶があるんだ。 |
|
|
|
04:00.340 --> 04:01.510 |
|
私のメールアドレスがある。 |
|
|
|
04:01.510 --> 04:02.560 |
|
これは私のリンクトインだ。 |
|
|
|
04:02.560 --> 04:04.720 |
|
LinkedInで私とつながってくれる人はいつも嬉しい。 |
|
|
|
04:04.750 --> 04:08.560 |
|
挨拶がてらメッセージを入れてくれるのはありがたいが、 本当にその必要はない。 |
|
|
|
04:08.560 --> 04:10.950 |
|
ただつながりたいだけなら、 私はそれでいいと思う。 |
|
|
|
04:10.950 --> 04:15.190 |
|
このコースを受講している人たちからのコネクションは常に受け入れるつもりだ。 |
|
|
|
04:15.190 --> 04:16.090 |
|
もちろんだ。 |
|
|
|
04:16.210 --> 04:21.010 |
|
もうひとつは、 ノートブックがもう一冊あるということだ。 |
|
|
|
04:21.130 --> 04:24.340 |
|
そして申し訳ないが、 このJupyterラボはノートブックとして知られている。 |
|
|
|
04:24.430 --> 04:27.040 |
|
人々は歴史的な理由からそう呼ぶ。 |
|
|
|
04:27.250 --> 04:31.480 |
|
ええと、 ここにトラブルシューティングという別のノートがあります。 |
|
|
|
04:31.480 --> 04:36.730 |
|
そして、 トラブルシューティングは、 トラブルシューティングで問題が発生したときに行く場所だ。 |
|
|
|
04:36.760 --> 04:37.600 |
|
ええと、 始まる。 |
|
|
|
04:37.630 --> 04:38.260 |
|
なんてことだ。 |
|
|
|
04:38.500 --> 04:45.070 |
|
何が間違っているのか、 envファイルをチェックする必要がある。 |
|
|
|
04:45.100 --> 04:45.640 |
|
良さそうだ。 |
|
|
|
04:45.640 --> 04:47.470 |
|
私はすべてをチェックしながら進めていく。 |
|
|
|
04:47.470 --> 04:51.670 |
|
だから、 何かトラブルがあったら、 トラブルシューティングに行けば解決する。 |
|
|
|
04:51.670 --> 04:55.510 |
|
でも、 それ以外は初日のノートから始める。 |
|
|
|
04:55.510 --> 05:00.610 |
|
通常、 このコースでは、 各日ごとに別のノートを用意し、 その日のうちに学習し、 |
|
|
|
05:00.640 --> 05:03.850 |
|
練習問題を解くことができるようにします。 |
|
|
|
05:03.880 --> 05:04.690 |
|
オーケー。 |
|
|
|
05:04.690 --> 05:08.140 |
|
だから、 まずは輸入から始める。 |
|
|
|
05:08.140 --> 05:10.510 |
|
私はよく輸入品をトップに置くのが好きだ。 |
|
|
|
05:10.510 --> 05:17.140 |
|
JupyterLabのコードを上から下に実行する必要があるので、 まずこのインポートセルをクリックする。 |
|
|
|
05:17.150 --> 05:18.230 |
|
シフトを押し続ける。 |
|
|
|
05:18.230 --> 05:19.190 |
|
リターンを押す。 |
|
|
|
05:19.190 --> 05:20.630 |
|
そして走る。 |
|
|
|
05:20.660 --> 05:25.430 |
|
これでエラーが出た場合は、 トラブルシューティングノートブックにアクセスしてください。 |
|
|
|
05:25.460 --> 05:29.270 |
|
おそらく何が起きているのか、 何が起こっているのか、 そしてそれに対して何が必要なのかをお話しします。 |
|
|
|
05:29.300 --> 05:33.650 |
|
何らかの理由でconda環境が有効になっていない可能性が高い。 |
|
|
|
05:33.650 --> 05:35.450 |
|
そのためにどうすればいいかを教えてあげよう。 |
|
|
|
05:36.290 --> 05:36.980 |
|
オーケー。 |
|
|
|
05:37.010 --> 05:40.580 |
|
次にすることは、 OpenAIに接続することだ。 |
|
|
|
05:40.610 --> 05:54.170 |
|
ここでOpenAIのAPIサービスに接続し、 GPT(フロンティアモデル)を呼び出して質問できるようにします。 |
|
|
|
05:54.200 --> 05:58.460 |
|
もちろん、 これからOpenAIやGPTについて、 そしてこれらのことが何を意味するのかについて、 もっとたくさん話していくつもりだ。 |
|
|
|
05:58.460 --> 06:00.110 |
|
その味を知ることだ。 |
|
|
|
06:00.110 --> 06:02.030 |
|
今はまだ、 最初のラボに過ぎない。 |
|
|
|
06:02.630 --> 06:06.230 |
|
そこでまず、 load dot envというものを呼び出す。 |
|
|
|
06:06.230 --> 06:11.150 |
|
そして、 ドットenvファイルを見て、 我々の秘密をロードする。 |
|
|
|
06:11.240 --> 06:14.120 |
|
今は、 OpenAIのAPIキーという秘密がある。 |
|
|
|
06:14.120 --> 06:17.240 |
|
それを読み込んで、 APIキーという変数に入れる。 |
|
|
|
06:17.240 --> 06:20.120 |
|
そして、 それがまともに見えるかどうかをチェックするんだ。 |
|
|
|
06:20.210 --> 06:23.190 |
|
APIキーが見つかりました。 |
|
|
|
06:23.220 --> 06:24.570 |
|
もしそう書かれていなければ |
|
|
|
06:24.570 --> 06:25.320 |
|
もし書かれていなければ |
|
|
|
06:25.350 --> 06:28.470 |
|
APIキーが見つかり、 今のところ問題なさそうだ。 |
|
|
|
06:28.470 --> 06:30.210 |
|
解決するか、 それとも |
|
|
|
06:30.570 --> 06:32.820 |
|
メールで連絡してくれ。 |
|
|
|
06:32.850 --> 06:35.730 |
|
大丈夫だ。 |
|
|
|
06:35.730 --> 06:39.240 |
|
次にすることは、 このシンプルなことだ。 |
|
|
|
06:39.270 --> 06:41.040 |
|
我々はOpenAIを採用している。 |
|
|
|
06:41.070 --> 06:44.580 |
|
そのインスタンスを作ってOpenAIに置く。 |
|
|
|
06:44.760 --> 06:46.350 |
|
ええと、 ここが僕らのいる場所なんだ。 |
|
|
|
06:46.380 --> 06:51.000 |
|
実際にOpenAIとの接続が完了した。 |
|
|
|
06:51.780 --> 06:52.650 |
|
分かった。 |
|
|
|
06:52.650 --> 06:55.800 |
|
さて、 今日はどんな企画にしようかな? |
|
|
|
06:55.800 --> 06:57.510 |
|
私たちは実際にどのようなビジネス上の問題を解決しようとしているのか。 |
|
|
|
06:57.540 --> 06:58.050 |
|
解決するため? |
|
|
|
06:58.050 --> 07:00.510 |
|
本当にシンプルで、 とてもクールなものになるだろう。 |
|
|
|
07:00.510 --> 07:08.010 |
|
インターネット上のあらゆるウェブページを見て、 ウェブページの内容をスクレイピングし、 それを要約して、 |
|
|
|
07:08.010 --> 07:14.400 |
|
そのウェブページの短い要約を返すことができるプログラムを書こうと思っている。 |
|
|
|
07:14.400 --> 07:19.440 |
|
自分自身の小さなウェブ・ブラウザーを構築しているようなもので、 要約ウェブ・ブラウザーのようなものだと考えればいい。 |
|
|
|
07:19.440 --> 07:21.120 |
|
ええと、 ほら、 リーダーズ・ダイジェスト。 |
|
|
|
07:21.120 --> 07:23.430 |
|
リーダーズ・ダイジェストのウェブブラウザのようなものだ。 |
|
|
|
07:23.810 --> 07:25.100 |
|
ええと、 そうするつもりなんだ。 |
|
|
|
07:25.100 --> 07:26.450 |
|
それがこのプロジェクトになる。 |
|
|
|
07:26.450 --> 07:33.380 |
|
そして、 クラスwebsiteを定義することから始めよう。 これは、 スクレイピングしたウェブサイトを表す、 |
|
|
|
07:33.380 --> 07:37.460 |
|
とてもシンプルなユーティリティ・クラスになる。 |
|
|
|
07:37.610 --> 07:42.470 |
|
URL、 タイトル、 テキストを持つクラスになります。 |
|
|
|
07:42.470 --> 07:46.280 |
|
一行ずつ説明するつもりはない。 |
|
|
|
07:46.280 --> 07:54.920 |
|
この後、 他のラボでもっと詳しく説明する予定だからだ。 |
|
|
|
07:54.920 --> 07:58.370 |
|
これはまさに、 あなたにとって初めての経験なのだ。 |
|
|
|
07:58.370 --> 08:08.840 |
|
さて、 このコンストラクタとクラスのセットアップでは、 Beautifulsoupというパッケージを使っている。 |
|
|
|
08:08.840 --> 08:15.770 |
|
これはウェブページの解析に使われる素晴らしい小さなパッケージで、 私のようにウェブスクレイピングを日常的に行っている人間は、 |
|
|
|
08:15.770 --> 08:20.120 |
|
Beautifulsoupをよく知っている。 |
|
|
|
08:20.210 --> 08:25.490 |
|
Beautifulsoupを使えば、 ウェブページのタイトルを抜き出したり、 ウェブページからスクリプトやスタイルや画像や入力を取り除いて、 |
|
|
|
08:25.490 --> 08:31.590 |
|
そのテキストを見つけ出すことができる。 |
|
|
|
08:31.890 --> 08:37.320 |
|
だから、 それが僕らの、 あー、 あー、 あー、 クラスのウェブサイトでやろうとしていることなんだ。 |
|
|
|
08:37.350 --> 08:41.340 |
|
そして、 最後にひとつ試してみよう。 |
|
|
|
08:41.340 --> 08:44.190 |
|
それでは、 新しいウェブサイト・オブジェクトを作りましょう。 |
|
|
|
08:44.190 --> 08:51.480 |
|
そして、 私は徹底的に望ましくないウェブサイトのために、 この特定のウェブサイトに渡すつもりだ私のウェブサイトであることが起こる。 |
|
|
|
08:51.660 --> 08:54.300 |
|
ええと、 とてもバニラなウェブサイトなんだ。 |
|
|
|
08:54.390 --> 08:56.760 |
|
しかし、 それを表現するクラスを作ることにしよう。 |
|
|
|
08:56.940 --> 09:00.450 |
|
タイトルを見て、 ウェブサイトの文章を見てみよう。 |
|
|
|
09:00.450 --> 09:01.740 |
|
うまくいくかどうか見てみよう。 |
|
|
|
09:01.830 --> 09:03.090 |
|
そうだ。 |
|
|
|
09:03.090 --> 09:04.440 |
|
そして、 これだ。 |
|
|
|
09:04.530 --> 09:07.440 |
|
ウェブサイトの名前を見ている。 |
|
|
|
09:07.560 --> 09:12.570 |
|
あのウェブサイトで何が起こっているのか、 何か書いてあるんだ。 |
|
|
|
09:12.870 --> 09:22.920 |
|
画像やJavaScriptのスタイルシートがすべて削除されたウェブページのコンテンツだからだ。 |
|
|
|
09:23.130 --> 09:27.390 |
|
これまでのところ、 私たちは生成AIやLlmsに関することは何もしていない。 |
|
|
|
09:27.390 --> 09:31.200 |
|
それは次のビデオで。
|
|
|