最近、HuggingGPT と AutoGPT の人気が高まり、LLM を Control として使用することが一般的な要求となりました。
先日、OpenAI の三大巨頭の一人である GDB が Ted でトークを行い、再び ChatGPT プラグインを公開しましたが、
残念ながら量子位のこの記事は、AutoGPT と ChatGPT プラグインを混同しているようです...
モデルの呼び出しはツールの使用の一環と見なすことができますが、AutoGPT のコア機能は Auto です。
さらに、Gradio は先週gradio_client機能をリリースしました。
それでは、gradio_client の具体的な機能について見てみましょう!
gradio_clientについて具体的に議論する前に、現在の開発者の状況を少し振り返ってみましょう。
ChatGPT の人気と、その非常に低価格な価格設定により、OpenAI API はすでにほとんどの開発者にとって必須のツールとなっています。
実際、多くの開発者は、オープンソースの LLM を OpenAI API の呼び出し形式に似た形でラップしています。
実際、HuggingFace Inference Endpointsを使用することで、OpenAI API と同様の機能を実現することもできます。
また、gradio_client を使用すると、Gradio プログラムが HuggingFace プラットフォームから切り離されても通信を維持できます。
これはある種の魔法の反射のように見えます... クラスを直接構築してインポートするだけで、予測関数を作成できますか?
... しかし、セキュリティはどのように処理されるのでしょうか?... それはおそらくエンジニアリングの問題だと思います...
- https://github.com/gradio-app/gradio/tree/main/client
- https://www.tomsoderlund.com/ai/building-ai-powered-rest-api
例#
Gradioクライアントは、画像生成器、テキスト要約、状態を持つチャットボット、税金計算機など、ホストされたGradioアプリケーションと共に動作します! Gradioクライアントは、主にHugging Face Spacesでホストされたアプリケーションと一緒に使用されますが、アプリケーションは自分自身のサーバーなど、どこにでもホストできます。
ChatGPT#
まず、基本的な Gradio プログラムを使って ChatGPT を試してみましょう。
HuggingFace 上の ChatGPT インスタンスはたくさんあります... いくつかの例をランダムに見てみましょう...
loveleaves2012/ChatGPT#
- https://huggingface.co/spaces/loveleaves2012/ChatGPT
このバージョンでは、機能を実現するために少しの Pre-Prompt が追加されていますが、コードは最も奇妙で、OpenAI キーをソースコードに直接ハードコードしていますが、実際には環境変数の設計があります。
ysharma/ChatGPTwithAPI#
- https://huggingface.co/spaces/ysharma/ChatGPTwithAPI
このバージョンは比較的標準的であり、ユーザーが自分自身の OpenAI キーを入力するように求めるという、このタイプのアプリケーションの標準的な方法です。(ユーザーがキーを持参する...)
anzorq/chatgpt-demo#
このバージョンは現時点で最も優れていると思います... なぜなら、プラグインのような安定した拡散機能を持っているからです...gist からプロンプトテンプレートを同期する...
私たちの複製バージョンはこちらで実行されています。
ChatGLM#
- https://github.com/Akegarasu/ChatGLM-webui
- https://huggingface.co/spaces/multimodalart/ChatGLM-6B
- https://github.com/lychees/ChatGLM-Gradio
もちろん、上記の例では Gradio を使用していますが、実際にはすべて OpenAI のサービスを使用しており、gradio_client の優位性を示すことができませんでした...
そのため、LLM の例に切り替えましょう。上記は 3 つの ChatGLM のコードのセクションで、すべて Gradio を使用して実装されています。
まず、紅葉さんのバージョンです。このバージョンはコントロールが最も豊富ですが、完全にローカル版であり、ユーザーはモデルをローカルにダウンロードして実行する必要があります。
HuggingFace との互換性はありません。
2 番目は HF のプロダクトである multimodalart のバージョンで、HF のインフラストラクチャを利用していますが、ユーザーはモデルをホストするためにお金を支払う必要があります。
def predict(input, history=None):
if history is None:
history = []
response, history = model.chat(tokenizer, input, history)
return history, history
3 番目のバージョンは、2 番目のバージョンを改変したもので、予測関数を変更するだけで、モデルの呼び出しをスキップし、リモートから直接呼び出します。
def predict(input, history=None):
if history is None:
history = []
client = Client('https://multimodalart-chatglm-6b.hf.space/')
with open(client.predict(input, fn_index=0)) as f:
text = process_text(f.read())
output = json.loads(text)[0]
history += [output]
return history, history
この例は現在ここで実行されています。
Stable Diffusion 2.1#
この例はもう少し複雑です。まず、HuggingFace 上にホストされているものの、従来の HuggingFace サービスではなく、以前の ChatGPT の例のように、Google と StabilityAI が共同で維持しているパブリックグッドです。
しかし、私たちは前の例と同じように...gradio_client を使用して predict メソッドを取得できます...
実際の実行結果はこちらで確認できます。
さらなる議論#
gradio_client は、私がオープンソースソフトウェアに対して持つ理想的な期待に合致しているように思えます。人々は私のために、私は人々のために、さらには自分自身でホストすることもでき、share=true を使用して外部サービス(たとえば Telegram ボットなど)にパッケージ化することもできます... 想像力は非常に大きいです...
しかし、よく考えてみると、いくつかの問題があります。最も大きな被害者は、モデルをデプロイする子供かもしれません。他の人のためにお金を使ってパブリックグッドを作ることになります。
また、モデルが非常に人気がある場合、既存のアーキテクチャのスケーラビリティは、クラウドモデルとの相互作用でもすぐに不十分になる可能性があります。
もちろん、現在のところ情報が少なすぎて、まだ実装方法やエクスポートされた関数がどのようなルールに従っているのか、セキュリティ上のリスクがあるのかなどを理解していません...
最後に、こちらでさらに多くの例があります。
さらに、gradio_client に依存するgradio_toolsもあります... 速すぎます...