概要
2024年10月21日に、Ollamaに、従来の「Granite Code」に加えて、テキスト生成に対応する「IBM Granite 3.0 モデル」が加わりましたので、さっそくOllamaで確認してみました。
上記については、Ollamaのブログ記事をご覧ください。
Ollama環境のセットアップ
基本的には、以前書いた「Ollama x Open WebUI で、IBMが作ったLLM「Granite Code」を動かすまでの備忘録」と同じですので、環境の用意の際に参考にしてください。
LLM「IBM Granite 3.0 モデル」の動作確認
IBM Cloud Virtual Serverで仮想サーバーを用意しましょう。Ollamaをインストール後、次のコマンドを実行します。
ollama run granite3-dense
こちらは、RAG(検索拡張生成)に使うことができる2つあるモデルのうちの1つで、軽量な2B(20億)パラメータの「granite3-dense」です。もう1つ8B(80億)パラメータの「granite3-dense:8b」があります。
コマンドを実行した結果、次のように表示されます。
>>> Send a message (/? for help)
実際に質問してみましょう。
IBMは、AIとクラウドコンピューティングを提供していますか?
質問を入力し、Enterキーを押すと、返信が生成されます。
はい、IBMはAIとクラウドコンピューティングの両方を提供しています。
AIは、人工知能(AI)および機械学習(ML)に関する分野です。IBMはAI技術を使用
して、さまざまな業界で自動化、分析、予測などのタスクをサポートします。IBM
Watsonは、AIとクラウドコンピューティングの両方を使用して、ビジネスクエリやト
ランスフォメーションに使用できるユーザーフレンドリーなプラットフォームです。
クラウドコンピューティングは、データセンターを所有するか持ちるかどうかに関わ
らず、インフラストラクチャ、アプリケーション、データをオンデマンドで提供する
サービスの一種です。IBM Cloudは、AIとクラウドコンピューティングの両方を使用
して、ビジネスに必要なすべてのリソースを提供します。IBM Cloud Pak for Dataは
、AIとクラウドコンピューティングを統合したデータとアプリケーション開発プラッ
トフォームです。
IBMは、AIとクラウドコンピューティングの両方を使用して、ビジネスに革新し、パ
フォーマンスを向上させるために、業界で信頼されています。
割といい感じの答えです。これは、インサイドセールス(デジタルセールス)やカスタマーサクセスのお仕事をしている方々にとっては、LLMを補助にすることで、より効率的にお客様と向き合う時間が増えそうです。
RAGを使う必要がなければ、さらに軽い「granite3-moe」や「granite3-moe:3b」も使えます。こちらも日本語で質問すると、返答が生成されます。
「granite3-moe」や「granite3-moe:3b」はとても軽量なので、スマートフォンやIoTデバイスに組み込んで使う前提と思われます。
今回のモデルは、いずれもライセンスが、Apache 2.0 ライセンスとのことなので、商用にも使えるので助かりますね。
次は、Open WebUIを使って、Webブラウザ上から、「IBM Granite 3.0 モデル」と会話できるようにしましょう。
Open WebUI の起動
「Ollama x Open WebUI で、IBMが作ったLLM「Granite Code」を動かすまでの備忘録」を参考に、Nginxのインストールと、OllamaをAPI利用するためのリバースプロキシ設定ファイルを作成しておきます。
curlを使ったOllamaのAPI接続および動作確認
次のコマンドを実行します。
curl http://仮想サーバーのパブリックIPアドレス/api/generate -d '{ "model": "granite3-dense", "prompt": "新潟県の県庁所在地はどこですか?日本語で答えてください。", "stream": false }'
http://仮想サーバーのパブリックIPアドレス/api/generate に接続し、LLM名を指定、プロンプトを指定することで結果を得ることができます。
動作確認なので、IPアドレスを使っています。本番運用では独自ドメインを使いましょう。
Open WebUI の起動
次のコマンドを実行します。OLLAMA_BASE_URLに、先ほどインストールしたnginxを指定します。
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://仮想サーバーのパブリックIPアドレス -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
実行後、Webブラウザで、VMの3000番ポートにアクセスします。
動作確認なので、IPアドレスを使っています。本番運用では独自ドメインを使いましょう。
以下が表示されれば、正常に動作していることを示します。Open WebUIが表示されます。
Open WebUI に管理者ユーザーを登録
最初の作業として、管理者ユーザーを登録します。「Sing up」をクリックします。
「Name」「Email」「Password」の各項目を入れ、「Create Account」をクリックします。
「What’s New in Open WebUI」が表示されるので、一読した後に「Okay, Let's Go!」をクリックします。
モデルを選ぶ
画面左上の「Select a model」をクリックし、「granite3-dense:latest」を選びます。
なお、画面を日本語化するには、赤枠の部分をクリックすることで隠されていたメニューが表示されるので、自分のユーザー名をクリックするとで、設定画面にアクセスができます。設定画面で日本語画面に切り替えることができます。
日本語で質問してみる
「How can I help you today?」と表示されている欄が質問を入力するところですので、日本語で質問していみましょう。
先ほどと同じ質問にします。
IBMは、AIとクラウドコンピューティングを提供していますか?
次のように返信が生成されました。日本語に加えて、英語でも生成されました。IBM tambiénという謎の言葉が入っているので、日本語で回答してくださいと追記して、もう一度質問してみます。
IBMは、AIとクラウドコンピューティングを提供していますか?日本語で回答してください。
次のように返信が生成されました。おそらく、Watson AIは、watsonx.ai かもしれませんが、わずか2Bモデルでいいかんじの内容が返ってきています。
このあたり、RAGの技術を使って調整すれば、期待ができそうです。
まとめ
本記事では、LLM実行ツールの「Ollama」と「Ollama」のUIである「Open WebUI」、IBMが提供するLLMの「IBM Granite 3.0 モデル」の「granite3-dense」を使い、Webブラウザ上で使える生成AIサービスとして動かすまでを確認しました。
わずか2Bの小さなモデルであるにも関わらず、今後に期待できそうな結果となり、オープンソースの生成AIアプリ開発プラットフォームの「Dify」と連携させるなどすれば、RAGベースの生成AIアプリが作れるので楽しみです。