つまり､ 最終的にデプロイするアプリを選ぶ前にテストするための一時的なアプリということです｡
エフェメラル・アプリにはもう少し長く付き合うつもりだ｡
前回構築した独自モデルをエフェメラル・アプリとしてデプロイしてから､ 実際にデプロイするつもりだからだ｡
そのために､ Pricer ephemeralというファイルをお見せしよう｡ Pythonのモジュールで､ 先ほど見たものと似ている部分もありますが､
1つだけ重要な違いがあります｡
1､
推論でモデルを実行し､ それをテストしていたときにコードラボで使用したコードと非常によく似たコードを使用して､
独自の微調整を行ったモデルを使用します｡
このPythonモジュールでは､ まず前回と同じようにmodalをインポートします｡
そしてまた､ ボリュームを取り除く｡
一時はそれを使うつもりだったが､ 結局使わなかった｡
つまり､ アプリを立ち上げるわけだ｡
プライサーと呼ばれている｡
それが､ あなたが見たアプリの名前になる｡
プライサー
以前､ 私のプリサーの展開版を見ただろう｡
次に､ イメージを作成して､ 同じパッケージをインストールします｡
だが待ってくれ､ 新しいパッケージがある｡
微調整したウェイトと秘密をロードできるようにするために必要な､ パラメーター効率の良い微調整パッケージを覚えているだろう｡
願わくば､ それらを加える方法を見つけて､ HFシークレットの下に置くべきだ｡
あるいは､ もしそれを他のものの下に置くのであれば､ 明らかにここの名前を変えてください｡
それが秘密のカテゴリーの名前だ｡
そしてその中に､ 通常のHFアンダースコア・トークンを抱きしめて､ トークンそのものを抱きしめていなければならない｡
ええと､ それが実際にコードのどこかにあるかどうか確認してください｡
それはないと思う｡
T4GPUが欲しいと指定する｡
もちろんベースモデルは指定する｡
ラマ 3. 180億ドル
ええと､ プロジェクト名です｡
これは､ ハギング・フェイスのハブから引っ張ってくるからだ｡
これが僕のハグする顔のユーザーネームなんだ｡
私の訓練されたバージョンを使いたいのであれば､ そこに私の名前を残しておいてほしい｡
もし､ あなたが自分のバージョンを使いたいのであれば､ そのバージョンを微調整し､ もしかしたらさらに良くするかもしれないからだ｡
もしかしたらハイパーパラメーターの最適化をやっていて､ 私に勝ったのかもしれない｡
うーん､ でもこれは僕のものだし､ 僕のものを使うなら､ そのランネームを使うべきだよ｡
そしてこのリビジョン番号は､ オーバーフィットを始める前の､ 私が最高の結果を得たエポックだったことを覚えているだろう｡
こうして､ 微調整されたモデル名で終わる｡
そうして､ シンプルな関数価格を手に入れた｡
これは､ グーグル・コラボにあった機能とほとんど同じものだ｡
これをローカル・ボックスに置いて､ このデコレーターでデコレーションするんだ｡
しかし､ これはすべて同じものだ｡
輸入も行っている｡
その質問と接頭辞に注目したい｡
1ドル単位でいくらですか？
次に商品の説明､ そして価格がドル表示される｡
そうなると､ モデルにとって､ 価格がいくらなのか答えないのはほとんど耐え難いことになる｡
そして､ ここで量子化を行う｡
先ほどと同じようにモデルをロードする｡
そして､ このセリフを覚えていてほしい｡
ここでローラのファインチューン・モデルをロードする｡
私たちはベースモデルを提供する｡
微調整されたモデルの名前と､ この場合はリビジョン番号を提供する｡
最終的なセーブを取るだけなら､ それは外してもいい｡
中間点を取る必要はない｡
私のあり方｡
これは再現性のためだ｡
ランダムシードが設定されるように｡
だから､ トークン化するたびに同じ数字が得られる｡
そして､ 微調整したモデルにドットジェネレーションのコールをかけ､ デコードする｡
そして最後に､ 願わくばこのコードも認識していただきたい｡
これは､ 戻ってくるテキストから浮動小数点数を取り除く､
ちょっとしゃれたコードで､ ドル記号などが間違っている場合に備えている｡
この時点では､ かなり見慣れたコードになっているはずだ｡
では､ ここに戻ろう｡
ええと､ ウォームアップが必要だから､ 前と同じように走らせたんだ｡
数分かかる｡
だから､ 毎回待たされるのは苦痛だ｡
でも､ もう走ったんだ｡
もちろん､ これは私が走ったものだ｡
モーダルイネーブル出力で実際にこれを持つ必要はない､ とあなたは言う｡
でも､ もしそうしなければ､ 他にもたくさんのプリントがある｡
だから､ これはすっきりとした形にする方法なんだ｡
でも､ アプリのドットランは必要だよ｡
ええと､ それから､ 結果は遠隔地での価格だと言うだけだ｡
そして､ 私が求めているのは､ ある特定のものに値段をつけることです｡
そして､ 私が値付けを依頼した対象は､ まさにここで私が話しているマイクだ｡
だから､ そこに入力したんだ｡
いくらかかったか覚えている｡
なぜそうしないのか？
それを見積もってどうなるか見てみよう｡
それで走ったんだ｡
数分かかったよ｡
このボックスをウォームアップして､ いろいろなものを入力しなければならないので､
2､ 3分かかります｡
Huggingfaceのハブからダウンロードして､ それをメモリにロードしなければならない｡
ええと､ これらのパッケージをすべてpipでインストールする必要があります｡
だから､ たくさんのことが起こらなければならないし､ だから少し時間がかかるんだ｡
ええと､ それでいろいろやって､ 最後には完了して､ 1番､ 33番､ 133ドルを返した｡
そして､ それがこの費用の相場だと思う｡
だから､ ああ､ そうだね､ うん､ たぶん､ その通りだと思う｡
誰が知っている？
トレーニングデータセットの中にあったかもしれないが､ まあ､ 確かにいい結果だ｡
だから願わくば､ これを試してみてほしい｡
2分､ 2分､ 3分待たなければならない｡
そうしているうちにモーダルにも行けるようになるし､ エフェメラルアプリにも行けるようになる｡
今はもう稼働していないが､ 稼働している間はここにいて､
その様子を見て､ 納得のいく結果を得ることができるだろう｡
オーケー｡
しかし､ それが終わった今､ リモートで機能を実行する方法に過ぎないエフェメラルなアプリから移行する時が来た｡
デプロイされたアプリは､ いくつかの機能があり､ それを常設したいことをModellに伝えます｡
しかし､ 私たちはこのプロジェクトに名前をつけ､ 必要なときにすぐに戻れるような適切な場所を作りたいと考えています｡
コマンドラインでmodelと入力するんだ｡ deployとデプロイしたいアプリの名前を入力する｡
データサイエンティストとして構築したコードやモデルを､
本番で使えるようにデプロイしているのだ｡
PythonのAPIを使う予定だ｡
人々はPythonからこのAPIを呼び出すことができ､ APIを呼び出すことができる｡
これはJupyterLabに元々組み込まれているプロダクション化の例です｡
モーダルは､ Pythonから呼び出される必要がないように､ 非常に簡単にRestエンドポイントを構築することもできます｡
どのようなHTTPクエリからでも呼び出すことができる｡
このクラスでは､ Pythonを使うので､ Pythonについては扱いません｡
だから､ Pythonから呼び出せばいいのだ｡
でも､ それはとても簡単なことだし､ ドキュメントにもはっきり書いてある｡
それで､ ちょっと前に話したことなんだけど､ もう知っているかもしれないね｡
ジュピターには､ 感嘆符を押すだけでターミナルで何かを実行できる素晴らしい機能があるんだ｡
そして､ 実行したいコマンドの名前を入力する｡
プラスボタンを押してターミナル・ウィンドウを開き､ ターミナルを作成することもできる｡
ええと､ でもこれはもっと簡単で､ このプロンプトの中でできるんです｡
コマンドはモーダルデプロイで､ 次にパッケージ名を指定する｡
つまり､ プライスレスなサービスなんだ｡
では､ サービス価格というパッケージを見てみよう｡
早速だが､ ここで私が得たものを紹介しよう｡
だから......驚くほど似ているんだ｡
基本的には､ 定数があり､ 関数が定義され､
基本的には同じことなのですが､ これでコードをサービスとしてデプロイするのに十分なのです｡
でも､ 同じことだよ｡
パッケージが違うだけで､ 同じコードだ｡
そしてまた､ このボリュームではその必要はない｡
初日のノートブックに戻ると､ プライスのサービスとしてデプロイされているのがわかる｡
ええと､ 最後に小さなURLが表示されるんだ｡
それが終わったら､ ここに戻ってアプリの配置に行くと､ 価格が表示されているのがわかると思う｡
T4のGPUボックスの上に座っている｡
ここで話を戻すと､ デプロイされたアプリを呼び出す方法は､ エフェメラル・アプリとは異なり､ 実はシンプルだ｡
それは必要ない｡
さっきの足場｡
その代わりに､ モーダル・ドット・ファンクション､ ドット・ルックアップと言い､ サービス名とファンクション名を指定する｡
単純なことだ｡
モーダルドット機能｡
サービスと機能をドット検索する｡
そうしたら､ price dot remoteと言って､ リモート・コールができる｡
そして､ 同じ133という数字が返ってきた｡
それがすべてだ｡
私たちは､ 独自モデルのアプリをクラウドにデプロイし､ それを呼び出してクラウド上で実行したところです｡
もっといい方法があるんだ｡
このように作ると､ スリープして再び温める必要があるたびに､
1､ 2分後にはスリープしてしまう｡
そのため､ 呼び出すたびに余分な時間を待たされ､ 基本的には毎回､ 画像を再構築し､
インポートを行い､ モデルをロードしなければならない｡
あの､ すみません｡
その必要がないバージョンにジャンプしたんだ｡
さあ､ 始めよう｡
これはそのすべてをやらなければならない悪いバージョンだ｡
だから､ 第2バージョンを作ったんだ｡
価格は2π｡
このモジュールは......そしてこのモジュールは､ もう少しスマートな方法で作られている｡
これはクラスを使って行われ､ 初期化のいくつかの側面を事前に構築することができる｡
だから毎回やる必要はない｡
このようなクラスを定義すると､ このデコレーター・モデルのドットビルドを使用して､ 最初にボックスをビルドしたときに､
そのボックスにデータを入力する関数を書くことができます｡
この場合､ 私はhuggingfaceからモデルをダウンロードし､ それをキャッシュに入れる｡
時間の都合上､ 練習として残しておくが､
これは完全に自明なことだ｡
このコードはHuggingfaceからファイルをロードし､ Huggingfaceのキャッシュに置く｡
そして､ このデコレーター・モーダル・ドットを入力させれば､ この関数が実際に呼び出される｡
そしてここで､ トークナイザーをセットアップし､ 一度読み込まれるベースモデルをセットアップする｡
だから繰り返し使える｡
これがスリープに入る前に呼ばれた場合｡
ええと､ これは方法そのものの値段なんだ｡
これは以前と同じですが､ モデルをメモリにロードするコードは､ Aデコレータのモーダルまたはエンターの下のセットアップのモーダルにあるこのコードに取り出されました｡
この結果､ もし私がまだこの件で皆さんを迷わせていないのであれば､ 初日に戻って､
重要なポイント､ つまり､ 私はプロセス・サービス2をモーダルにデプロイする｡
プロセス・サービス2が配備されるわけだ｡
そうしたら､ このコードを少し変えて使うことができる｡
前回､ モーダル・ドット・ファンクション・ドット・ルックアップをやったのを覚えているだろうか｡
今は､ モーダルのドット・クラスをやっている｡
うーん､ おそらくクラスはすでに使われているものだろう｡
だから､ 彼らはそれを使うことができなかった｡
つまり､ モーダル・ドット・ドット・ルックアップし､ サービス価格と価格を大文字のP価格で表示する｡
だからクラスなんだ｡
これで､ 今デプロイしたクラスを見つけることができる｡
そのクラスをインスタンス化することができる｡
だから､ プライスはプライスのインスタンスだと言っているんだ｡
それから､ プライサー・ドット・プライス・ドット・リモートに電話すればいい｡
そうすると､ またその答えが返ってくる｡
そして､ 以前これを実行したときは､ すでにメモリにあったため超高速で実行されたが､ 今はすでにスワップアウトされているのだろう｡
だから､ 足手まといにならないように､ 今はやめておくよ｡
ええと､ その間に話ができるように､ 今キックオフしようと思うんだ｡
走らせてみよう｡
そこで､ これをSpecialist Agentという便利なクラスにまとめました｡
これは､ モーダルで動いているプライサーを調べて､ プライサーを呼び出すものです｡
そして､ それはただ一つの関数､ 一つのメソッド価格を取るものだ｡
そして､ 値段も自由に設定できる｡
行って見よう｡
それはエージェントにある｡
そして今､ 最初のプレビューができる｡
今週プレーするさまざまなエージェントを見てほしい｡
この捜査官を調べに行くんだ｡
スペシャリスト・エージェントと呼ばれるのは､ 我々の特別なモデルを使っているからだ｡
これがスペシャリスト・エージェント用のPythonモジュールだ｡
そして､ 約束したように､ 私がコメントを書いたり､ 何らかのヒントがあることがわかるだろう｡
だから､ このクラスはとてもシンプルなクラスだ｡
これは､ 我々の微調整されたLLMをモーダルでリモートで実行するエージェントだ｡
ええと､ 名前を決めて､ 自分に名前と色をつけるんだ｡
その理由は後でわかるが､ エージェントにログを残してもらうためだ｡
だから､ 彼らが何をしているのか見ることができる｡
そしてスペシャリスト・エージェントは赤を選ぶ｡
だから､ いつ何を考えているのか､ 何をしているのか､ そういうことがわかるようになる｡
コンストラクタの初期化メソッドで初期化し､ ログに記録する｡
そして､ このモーダルなドット＋ドット検索を行う｡
そして､ サービスや価格を調べる｡
そして､ これが先ほど配備したものだ｡
だから､ それを調べてインスタンス化した｡
そして､ ビジネスの準備ができたことを記録する｡
そして､ プライスコール自体も､ まさに今見てきたようなことをする｡
私たちは価格ドット・プライス・ドット・リモートを行っている｡
ハロー・ドット・リモートの時と同じだよ｡
私たちはファンクションを取っている｡
私たちはリモートと呼んでいるが､ これはクラウド上で実行することを意味している｡
ほとんど透明なんだ｡
Pythonで直接呼び出しているようなものだが､ 実際には指定したT4ボックス上のクラウド上で実行される｡
説明を渡し､ 完了したことを記録し､ 結果を返す｡
だから願わくば､ 初日に戻ったときには終わっていて､ まだ終わっていないということになるくらい､
長い間おしゃべりしていたい｡
それなら､ ここをめくって時間を埋めることもできる｡
ええと､ だから今ここで､ 思い出す前に､ 僕は儚いアプリを探して迷子になったんだ｡
現在､ デプロイされたアプリについて正しく理解しています｡ なぜなら､ デプロイされたアプリであるPricerサービスまたはPricerを見ているからです｡
私たちはこの中に入って見てみることができる｡
ああ､ 今は成功したと言っている｡
戻って見てみよう｡
それは確かに成功した｡
これでよし｡
それは成功し､ 正しい数字133を返した｡
そして､ 遅滞なくすぐにもう一度走らせたら､ どれだけ速いかわかるだろう？
すでに暖かくなっているときは､ それだけ早くなるのが普通だ｡
それがクラウドに出るんだ｡
早く違うものを考えよう｡
iPhone SEセカンドエディションにしよう｡
iPhoneの値段を見てみよう｡
これでよし｡
299ドルらしい｡
そして､ iPad Pro第2世代を見ることができたことをうれしく思う｡
299ドルというのは､ またしても人気の値段なのだろう｡
だから､ 暖まればいい感覚が得られる｡
一旦モデルを入力したら､ それを素早く呼び出すことができ､ 素早い応答が返ってくる｡
そしてまた､ エージェントに電話する｡
そして､ 我々のエージェントがやっていることは､ こちらのエージェントがすでにやっていることだ｡
すでにクラスがあり､ インスタンス化されている｡
そして､ そのクラスはすでにハギング・フェイスのファイルにロードされている｡
そして､ 暖かく､ ビジネスの準備が整っている｡
そして､ このメソッドを呼び出すと､ ファイルを再度読み込む必要がなくなる｡
準備万端だ｡
必要なのは推論だけだ｡
だから､ とても速いんだ｡
それがコツなんだ｡
これが､ クラウドでサーバーレスで動作するモデルへのAPIを構築する方法であり､
モデルの重みをメモリにキャッシュして､ すぐに実行できるようにする方法だ｡
だから､ 私たちはあっという間に終わってしまった｡
モーダルでうまく機能し､ 見栄えがすることを確認してください｡
それではまた､ 次のビデオでお会いしましょう｡