はじめに
ローカルLLMが話題になっていますね。そんな中、iPhoneアプリの「Enchanted」を使って、ローカルLLMの「Ollama」を手軽に使う方法をご紹介します!
さらに、VPNサービスの「Tailscale」を導入すれば、外出先からもアクセスできるようになります。
この記事では、「Enchanted」と「Ollama」、そして「Tailscale」を使って、どこからでもローカルLLMを使う方法をご紹介します!
下記の記事もおススメ
Enchanted アプリ概要
Enchantedは、大規模言語モデル(LLM)の研究者が自分で運用するモデル(ローカルLLM)とチャットできるためのチャットアプリです。このアプリは、Ollama APIとそのエコシステム内のすべてのモデルに対応しています。Enchantedを使うには、稼働中のOllamaサーバーが必要で、アプリの設定でサーバーのエンドポイントを指定する必要があります。
主な特徴
- ストリーミング対応: 最新のChat APIと会話の文脈を活用したストリーミングが可能です。
- モデルの切り替え: プロンプトをテストするために、モデル間を簡単に切り替えられます。
- Markdownサポート: 表、リスト、コードなどが見やすくフォーマットされます。
開発の現状と展望
Enchantedはまだ開発の初期段階ですが、自分で運用するモデルを利用するLLMコミュニティ向けの主要ツールになることを目指す長期的なロードマップがあります。
Ollamaについて
Ollamaは、オープンソースのローカルLLM(Large Language Model)プラットフォームです。自分のコンピュータ上でLLMを動かすことができ、プライバシーとセキュリティを重視しながら、AIアシスタントとのやり取りを楽しむことができます。
特徴
- オープンソースで、誰でも自由に利用可能
- ローカル環境で動作するため、データがインターネットに送信されない
- 様々なLLMモデルを使用可能
- APIを提供しているため、他のアプリケーションと連携可能
Umievo-itr012-Gleipnir-7B モデル概要
今回はUmievo-itr012-Gleipnir-7B
を使っていきます。
Umievo-itr012-Gleipnir-7Bは、4つの強力な日本語モデルを進化的アルゴリズムで統合した先進的な言語モデルです:
- Japanese-Starling-ChatV-7B
- Ninja-v1-RP-expressive-v2
- Vecteus-v1
- Japanese-Chat-Umievo-itr004-7b
このモデルは、これらのモデルの特長を活かし、パフォーマンスと機能性を向上させています。
パフォーマンス
Umievo-itr012-Gleipnir-7Bは、ElyzaTasks100ベンチマークで平均スコア3.91を達成しました。
このスコアはLlama3-70Bによる3回の自動評価に基づいており、さまざまな言語理解タスクでの効果を示しています。
「Ollama」のセットアップ
インストール
Ollamaは、公式サイトからインストーラをダウンロードして実行するだけで、簡単に環境を整えることができます。
モデルのダウンロード
まずは「Ollama」にモデルを追加します。
> ollama pull llama3
※llama3
の部分は使用するモデル名に置き換えてください。
今回は「Umievo-itr012-Gleipnir-7B」の4bit量子化モデルを使用しますので下記のModelfileから作成していきます。
Modelfileの作成
ダウンロードしたモデルを使うには、Modelfile
を作成する必要があります。以下のような内容でModelfile
を作成しましょう。
FROM ./Umievo-itr012-Gleipnir-7B_q4_K_M.gguf
PARAMETER temperature 1.0
PARAMETER repeat_penalty 1.2
PARAMETER num_ctx 4096
TEMPLATE """{{ if .System }}{{ .System }} {{ end }}{{ if .Prompt }}USER: {{ .Prompt }} {{ end }}ASSISTANT: {{ .Response }}"""
SYSTEM """あなたはユーザーに親身になり、役立つ、詳細な、丁寧な回答を提供します。"""
PARAMETER stop "USER:"
PARAMETER stop "ASSISTANT:"
PARAMETER stop <s>
PARAMETER stop </s>
モデルデータのダウンロード
下記からモデルデータのダウンロードをしてきます。
モデルデータの作成
Modelfile
を作成したら、以下のコマンドでモデルデータを作成します。
> ollama create Umievo-itr012-Gleipnir-7B_q4_K_M -f ./Modelfile
※-f
オプションでModelfileのパスを指定します。
動作確認
以下のコマンドで、モデルが正常に動作するか確認しましょう。
> ollama run Umievo-itr012-Gleipnir-7B_q4_K_M
まずはollama側の設定!
Umievoというモデルを使用していたので勉強も兼ねてこれをダウンロード+起動!
以下ModelfileとモデルのURL
---
Modelfile
FROM ./umiyuki-Umievo-itr012-Gleipnir-7B-Q4_K_M.ggufPARAMETER temperature 1.0
PARAMETER repeat_penalty 1.2
PARAMETER num_ctx 4096TEMPLATE… https://t.co/iQq95XOrHv pic.twitter.com/FUESw1XNVs
— Maki@Sunwood AI Labs. (@hAru_mAki_ch) June 1, 2024
Windowsの設定
デフォルトでは、ローカルからのアクセスに制限されているため、以下の環境変数を設定します。
> set OLLAMA_HOST=0.0.0.0
> set OLLAMA_ORIGINS=192.168.10.*
環境変数を設定したら、「Ollama」を再起動します。
Tailscaleを使ったVPN設定
Tailscaleは、簡単にVPNを構築できるサービスです。これを使えば、外出先からもローカルネットワーク内の「Ollama」にアクセスできるようになります。
Tailscaleのセットアップ
- Tailscaleの公式サイトにアクセスし、アカウントを作成します。
-
Windowsマシンにアプリをダウンロードしてインストールします。
-
インストール後、Tailscaleアプリを起動し、アカウントにログインします。
-
iPhoneにもTailscaleアプリをインストールし、同じアカウントでログインします。
iPhoneからのアクセス
iPhoneでTailscaleアプリを起動し、VPNに接続します。
これで、外出先からもVPN経由で「Ollama」にアクセスできるようになりました!
tailscaleを使うことで自宅のPCとスマホをVPNで接続完了!! https://t.co/nckhXRdYRk pic.twitter.com/dItycGGSSb
— Maki@Sunwood AI Labs. (@hAru_mAki_ch) June 1, 2024
「Enchanted」の設定
アプリのダウンロード
App Storeから「Enchanted」アプリをダウンロード・インストールします。
接続設定
「Enchanted」アプリの"Settings"画面で、「Ollama」のアドレスを入力し、保存します。
これで、iPhoneから「Ollama」に接続できるようになりました!
iPhoneアプリ「Enchanted」を使って、自宅のパソコンで動かしているローカルLLM「Ollama」に、外出先からVPN経由でアクセスできるようになりました。
これで、どこにいてもスマホから手軽にローカルLLMを使えるようになりました。 https://t.co/t7zkJZX3i7 pic.twitter.com/XseqqWu1b2— Maki@Sunwood AI Labs. (@hAru_mAki_ch) June 1, 2024
まとめ
「Enchanted」アプリを使えば、iPhoneからローカルLLMの「Ollama」を手軽に使うことができます。
ローカル環境でLLMを使いたい方は、ぜひ試してみてください!
Enchantedを無事に動かすことができました!ローカルLLMをスマホで手軽に使えるのは魅力的ですね。
一応、音声入力機能もありますが、現時点では英語のみの対応となっています。
将来的に読み上げ機能などが追加されて、会話のようなやり取りができるようになったら、さらに面白くなりそうです!
Enchantedは手軽さとスッキリとしたデザインが特徴で、スマホでローカルLLMを使うのに適しているアプリだと思います。
ただ、現状の機能を見ると、拡張性という点ではオープンソースのOpenWebUIの方が、スマホとPCの両方で利用できるので優れているかもしれません。
どちらを選ぶかは、ユーザーのニーズと好みによって異なるでしょう。
これからもローカルLLMの発展に注目していきたいと思います!
コメント