さて､ Jupyter Labにようこそ！このプラットフォームでの時間の壮大なフィナーレを飾ることになるだろう｡
そして､ この7週間を締めくくる素晴らしいものになるだろう｡
まず気づくのは､ 8週目のフォルダーにはかなり多くのことが起こっているということだ｡
これは､ この大きな問題を解決するために､ 私たちが多くの仕事をこなさなければならないという事実を反映している｡
つまり､ このコードを読み進めるにあたって､ いつもより速いペースで進むということだ｡
でも大丈夫､ この時点であなたはLLMエンジニアリングをマスターしているのだから｡
アシスタントのディクテットやユーザーのリストなど､ もはや私が長々と説明する必要はない｡
それはもう､ 非常に古いニュースだ｡
ほんの数週間前まで､ トークンが何なのかを説明していたなんて｡
そして今､ あなたは大規模な､ 完全なエージェントAI Iの準備ができている｡
始める前に､ 簡単な管理上の注意点を説明しよう｡
パッケージを少し変更したんだ｡
この環境に依存するパッケージをいくつか追加した｡
つまり､ 9月下旬以前にコードを取得した場合は､ 私が追加した新機能を追加するために､ 再度コードを取得し､
パッケージを更新する必要があるかもしれないということだ｡
それはとても簡単なことだ｡
もちろん､ プロジェクトのホーム・ディレクトリに行けばいいだけだ｡
だからLMエンジニアリングだ｡
PCを使っているなら､ Anacondaプロンプトに入る必要があります｡
それからgit pullして最新のコードを取得し､ conda env updateを実行する｡
ええと､ ファイルをenvironmentとして指定します｡ ymlとdash dash pruneは､ リストにもうないパッケージを削除するように指示する｡
私は何も削除していないと思うが､ とにかく､ これは常に賢明なあー､ ワンライナーだと思う｡
新しい環境にアップデートするために､ それを手元に置いておくのは良いことだ｡ ymlファイル｡
さて､ それでは始めよう｡
モーダルについて話そう｡
だから今日の授業では､ まず輸入品は1つしかない｡
そして､ モーダルをインポートすることである｡
これでよし｡
トークンをセットアップしていない場合は､ モーダルセットアップと呼ばれるコマンドラインを実行する必要があります｡
その実行方法は､ この行のコメントを解除して､ そのステートメントを実行するだけだ｡
今､ 私はそれをするつもりはない｡ なぜなら､ 私の環境はすでにセットアップされているからだ｡
しかし､ そうすると､ ブラウザ・ウィンドウがポップアップし､ モーダルを承認しなければならなくなる｡
そして､ モーダルがあなたの代わりに環境変数を設定する｡
それは本当に素晴らしいことだと思う｡
トークン､ 特にOpenAIで人々が抱えていた課題はすべて､ これはまったく異なる経験だ｡
実に合理的だ｡
モーダルにはとてもいい｡
彼らはトークンをセットする方法を本当に理解しているようだ｡
何らかの理由でそれがうまくいかない場合は､ モーダルプラットフォームに行けば､ OpenAIのようなものと同じように､
トークンを見つけることができます｡
そして､ 手動で設定することができる｡
うーん､ でもうまくいけばいいんだけど
確かに私にはそうだった｡
誰の目から見ても､ それが一般的な人々のための方法だ｡
分かった｡
次の行では､ helloというパッケージからいくつかのものをインポートします｡
これから､ その様子をお見せしましょう｡
つまり､ これはPythonの一部なんだ｡
ただのPythonのコードだよ｡
そして､ それが何をするものなのかを教えよう｡
そこで､ モーダルをインポートする｡
そして､ モーダルからいくつかのものをインポートする｡
アプリケーションのボリュームとイメージのためのアプリ｡
それに､ 今見てみると､ 結局ボリュームは使っていないんだ｡
だから､ その必要はないと思う｡
シンプルな方がいい｡
それで､ こうするんだ｡
まずはセットアップから始める｡
どのようなインフラが必要かをモーダルに伝える｡
これはモーダルの例で､ ドキュメントで少し触れています｡
しかし､ これはコードとしてのインフラの一種である｡
どのような箱が欲しいかをコードで記述することができる｡
Google Colabでは､ いろいろなドロップダウンを選んで､
どんなVMが欲しいか､ どんなランタイムが欲しいかを選ぶ必要があった｡
つまり､ Debianオペレーティング・システムのイメージが欲しいということだ｡
pipでrequestsパッケージをインストールしたい｡ このパッケージは､ URLウェブ作業を行うための､
とても一般的な標準パッケージだ｡
そして､ GPUを指定するのだが､ これもこの例では使わない｡
申し訳ない｡
これで少しシンプルになった｡
この例ではGPUを使うつもりはない｡ 非常にシンプルにしているからだ｡
helloというメソッドがある｡
とてもシンプルだ｡
それは機能だ｡
こんにちは｡
これは文字列を返す｡
それで何をするかというと､ リクエストをインポートして､ IP情報というウェブサイトにアクセスするんだ｡ これは知っておくと便利だ｡
JSONオブジェクトを返すユーティリティのひとつで､ IPアドレスの場所を記述している｡
そのJSONから都市､ 地域､ 国を抜き出し､ 都市､ 地域､ 国からこんにちはと言う｡
ええと､ IPアドレスに基づいているだけです｡
だから､ あなたがどこにいようと､ 少なくともISPがどこからあなたにサービスを提供していようと､ こんにちはと言うだけだ｡
だから僕にとっては､ ニューヨークにかなり近い場所になるだろうけど､ ニューヨークではないかもしれない｡
それはとてもシンプルな機能だ｡
このデコレーターはグラデーション・デコレーターで､
アプリでデコレートされています｡
ハロー・ドット・ファンクション
そして､ この画像の中を通過する｡
そして､ そのイメージはDebianのイメージを指しており､ そのイメージにはリクエストがインストールされている｡
このような装飾を施すことで､ 我々が望めばこのような箱でこれを走らせることができると言っているのだ｡
それだけだ｡
だから､ そのことは横に置いておいてほしい｡
これは既存のコードの一部だと想像できるだろう｡
あなたは何かをしなければならなかった｡ そして今､ あなたはそれを､ Debianオペレーティングシステムを使い､
リクエストをインストールした上で､ それを実行できるようにしたいという言葉で飾った｡
このハローワークにあるのは以上だ｡ パイ｡
超シンプルだ｡
初日のドット､ ジュピター・ノートブックに戻ろう｡
だから､ これからそれをインポートする｡
そして今できることは､ ここでインポートしたhello関数を呼び出すことだ｡
そして､ ハロー・ドット・ローカルと言って呼ぶことができる｡
つまり､ 先ほど定義した関数を､ ローカル・ボックス上で実行したいのだ｡
このJupyterノートブックで実行したい｡
何が出てくるか見てみよう｡
だから､ 今走っている｡
アメリカ､ ニューヨークのシーポートからこんにちは｡
そこが私のISPなんだと思う｡
もう一度やってみよう｡
ああ､ それはかなり一貫しているようだ｡
これがローカルで動いているわけだ｡
それと､ これを見てくれ｡
まったく同じことだ｡
ローカルをリモートに変更したところだ｡
それだけだ｡
唯一､ 変えたことがある｡
どうなるか見てみよう｡
もう少し時間をかけてからにしよう｡
バージニア州アッシュバーンからこんにちは｡
まったく違う状態で走っているから､ それを期待しているんだろうね｡
おわかりだろう｡
あー､ 時には違うこともある｡
ちなみに､ あちこちで見かけるようになった｡
つまり､ ローカルではなくリモートを呼び出すだけで､ 同じコード､ 同じPythonコードを呼び出すことができる｡
そしてそれはサーバーにデプロイされ､ 代わりにそのサーバーで動いている｡
それはとても不思議なことだと思う｡
とてもシンプルで､ いくつかのコードをデプロイするだけでいいのだから､ 魔法のようだ｡
そして今､ 私たちはllamaという少し複雑なパッケージを手に入れた｡
そしてここからGPUのようなものが登場する｡
ハローの例と対になっているのがわかるだろう｡
まず､ 自分のアプリのラマに電話するんだ｡
ええと､ もう一度Debianのイメージを作りますが､ 今回はtorch transformers､ bits and bytesをインストールして､
皆さんが知っているすべてのパッケージを加速させます｡
まあ､ この時点で､ うーん､ 僕はモード・シークレットからハグする顔のトークンも手に入れている｡
モーダルでどのように設定するか､ どのようにシークレットにアクセスするか､ どのようにハグする顔のトークンを設定するか､
すぐにお見せしましょう｡
そうしたら､ こう読むことができる｡
そして､ 私はT4 GPUが欲しいと指定しているのですが､ それはもちろんとても安いベーシックなものです｡
そして､ ここには不変のものがある｡
そして今､ 私はこの､ この､ 生成機能を手に入れた｡
そして､ 文字列であるプロンプトを受け取り､ 文字列を返す｡
これはタイプのヒントの例である｡
ご存じない方も多いだろう｡
今回もいろいろなところでやることになるだろう｡
そして､ それは......少し経てば明らかになると思う｡
この関数を装飾して､ 画像を渡し､ 秘密を伝え､ T4 GPUが欲しいと言うと､
コードを使ってサーバーを設定する｡
そして今､ これはローカルで実行する何かを書いているかのような単なる関数である｡
というのも､ 私のマシンには､ このようなラマ・モデルをローカルで動かせるほどの馬力はないからだ｡
リャマCPのようなものに詳しい人ならできる方法もあるだろうけど､ ここに書いてあるようなことは僕にはできないし､
やったとしてもとてもとても時間がかかる｡
それで､ T4 GPUを搭載したボックスでそれをやりたいんだ｡
ええと､ それで､ このコードはすべて､ あなたにとって非常に見慣れたものに見えるはずです｡
これがあなたが知っているコンフィグだ｡
つまり､ 4ビットの量子化をラマに指定することになる｡
ええと､ トークナイザーをロードします｡
さて､ モデルをロードしよう｡
そして､ 入力としてプロンプトをトークンにエンコードする｡
その警告を受けないように､ このアテンションマスクを設定した｡
そして､ モデル・ドット・ジェネレーションを行う｡
インプットを渡す｡
新しいトークンは5つだけで､ 返事は1つでいいとする｡
私たちはその1つのレスポンスを受け取り､ それを解読して返す｡
簡単なことだ｡
では､ それを実行してみよう｡
だから､ いろいろなことが起きている｡
それで､ まず最初に､ 僕は実際に何を走ったんだ？
リモート関数を呼び出したわけだが､ ラマモデルに渡したプロンプトの内容は謎だ｡
誰もが独り立ちしなければならない｡
今聞いたところでは､ ええと､ ええと､ 願わくば､ ほとんどの人がそこから次に何が起こるかを知っていてほしい｡
そうでなければ､ 私はとても年を取ったように感じるだろう｡
ええと､ でも､ ええと､ これはもちろん､ マドンナの『Like a Prayer』のオープニングからそのままなんだけど｡
そして､ 次は私の名前を呼ぶと聞いている｡
それを言わないのは､ ほとんど耐え難いことだ｡
あー､ 今日一日､ 頭の中でこの歌が鳴りっぱなしだ｡
あ､ でも､ あの｡
そうだね｡
そして､ もし僕がそれをいつまでも君の頭の中に置いていたら申し訳ないんだけど､ でも､ とてもキャッチーな曲なんだ｡
とにかく､ 今我々が見ているのは､ あの箱の上で何が起こっているかということだ｡
そして､ モーダルそのものに切り替えることもできる｡
ええと､ ええと､ この画面をリフレッシュさせてください｡
つまり､ デプロイされたアプリではないんだ｡
儚いアプリ｡
そういうことだ｡
ちょっと待ってください｡
それでこれだ｡
今走っている｡
エフェメラルなアプリとして動いている｡
クリックすると､ ステータスが実行中であることがわかる｡
それと､ 他に何が手に入るかな？
だから､ コンテナはライブなんだ｡
メモリやCPUコアを見ることができる｡
そして､ 我々が指定した通り､ T4 GPUであることがわかる｡
そして､ "ハロー "を見ることもできる｡ PYは今走ったこのボックスにもある｡
そしてラマ｡ さっき書いたPythonスクリプトが置いてある｡
ええと､ それではどうぞ｡
ここにいる間に指摘しておきたいのは､ ここの一番上にあるのは秘密だということだ｡
そしてシークレットはもちろん､ シークレットをセットする場所である｡
だから､ そうする必要がある｡
ハグしている顔の形見の秘密がバレないように､ 今はそれをクリックするつもりはない｡
でもそこで､ このエフェメラル・サービスにデプロイされたコードで､
ハグする顔のトークンを使えるようにするんだ｡
だからまだ動いている｡
この時点で､ 私はこのビデオに固執すると思う｡
で､ 戻ってきたら､ ああ､ もう成功したって書いてある｡
ええと､ ちょうど終了したというメッセージも受け取ったところだ｡
ええと､ それで...｡
見てみよう｡
そうだ｡
ここに戻る｡
何が出てくるか見てみよう｡
私の名前を呼ぶ声が聞こえる｡
ええと､ だから､ ラマ､ 4ビット量子化バージョンのラマも､ マドンナの曲を完成させないわけにはいかなかったんだ｡
ええと､ それで､ このコードを実行することに成功しました｡
このエフェメラルな､ あー､ モーダルなサービスを使って､ あー､ 量子化されたラマ､ あー､ モデル､ あー､ ラマ3を走らせる｡
プロンプトを完成させるモデル1名｡
分かった｡
また戻ってきたら､ モデルをデプロイして､ 前回構築した独自モデルの周りにAPIをどのように配置するか､
実際にやって見よう｡
すぐに会おう｡