LocalAI徹底解説!OpenAI互換のオープンソースAIをローカル環境で活用する方法
- Open AI互換でローカルで実行可能
- GPTモデルを使ったテキスト生成が可能
- Stable Diffusionを活用した画像生成も可能
LocalAIはオープンソースでの無料AIツールです。LocalAIでできることは多岐にわたっており、特にOpenAI互換であり、ローカルで実行可能なのが特徴。
LocalAI自体はLLMではなく、そのほかのLLMをローカル環境で動作させるためのプラットフォームです。LocalAI自体がOpenAIの代替と謳っていますが、実際のところはどうなのでしょうか?
本記事では、LocalAIの概要やLocalAIでできること、実際の使い方について詳しく解説します。ぜひ最後までお読みください。
LocalAIの概要
LocalAIはオープンソースの無料AIプラットフォームです。ユーザーは好きなLLMを選択して、ローカル環境またはオンプレミスで利用することができます。
また、利用する際にはGPUは必要ありません。オプションでGPUありを選択することも可能。オプションでGPUを選択できるモデルは限られていますので、モデル一覧のアクセラレーションを参考にすると良いでしょう。
LocalAIでできることは多岐にわたっており、例えば。
- GPTモデルを使ったテキスト生成
- 画像解析
- 画像生成
- テキストから音声への変換…etc
などをLocalAIで使えます。
OpenAIのAPIと互換性があるため、既存のアプリケーションやシステムをLocalAIに切り替えることも可能。LocalAIは無料で利用できるので、大幅なコストカットにつながります。
ただし、LocalAIではGPT-4oやminiなどのモデルを使うことはできず、オープンソースモデルの利用になります。
利用可能なLLM
LocalAIではllama.cppベースのモデルを始めとし、all-MiniLM-L6-v2などのSentence-Transformersのモデル、Hermes-2,やPhi-2、Whisperなどを使えます。
例えばllamaやHermesなどを選択した場合には、テキスト生成を行うことができますしStable Diffusionを選択した場合にはプロンプトから画像生成することも可能。
上記はLocalAIがサポートしているモデル一覧です。
左から、バックエンドとバインディング、対応モデル、チャットエンドポイント、機能、埋め込み対応、トークンストリーム対応、アクセラレーション(GPUの使用について)になります。
いずれのモデルもオープンソースもしくは無料で利用可能なものがほとんどです。すべてのモデルを一つずつチェックしているわけではないですが、使ってみた感じとしてはほとんどが無料で利用可能でした。
LocalAIのライセンス
LocalAIのライセンスはApacheライセンス2.0です。
そのため、基本的には改変や再配布、商用利用が可能です。ただし、再配布時には元の著作権表示やライセンスの通知を行う必要があります。
利用用途 | 可否 |
---|---|
商用利用 | ⭕️ |
改変 | ⭕️ |
配布 | ⭕️ |
特許使用 | ⭕️ |
私的使用 | ⭕️ |
なお、日本語で簡単に楽曲生成ができるSuno AIについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
LocalAIの使い方
LocalAIはローカル環境で使うことができ、GPUも必要としません。使い方はいくつかありますが、今回はHomebrewを使った方法をご紹介します。
LocalAIの公式ページを参考に行っておきます。
まずはLocalAIをインストールします。
brew install localai
インストール後、LocalAIを起動します。
local-ai --models-path ./models --debug=true
この時、モデルを保存するためのフォルダを事前に作成しておきましょう。上記のコマンドを入力後、LocalAIが起動しますので、WebUIにアクセスします。
http://localhost:8080
WebUIのURLは上記がデフォルトのURLです。アクセスすると下記画像のページに移ります。
現状だとモデルを何もインストールしていないので、モデルをインストールする必要があります。
galleryと書かれている部分をクリックすると、LLM一覧を見ることができます。
モデルは全部で695種類あるみたいです。気になるモデルがあったら、INSTALLと書かれているボタンをクリックすればOKです。今回はPhi-4をインストールします。
インストールが完了したら、再起動します。URLにアクセスすると下記画像のようになっていると思います。
モデルを使用するためには、画面上部のChatと書かれている部分をクリックします。
Chat画面に移ったら「Select a model」からモデルを選択します。
モデルを選択後、チャット欄にテキストを入力して送信すればOKです。
私もローカルで実行をしました。実行した時の環境としてはM1 Mac 8GBです。
最初はスムーズに進んでいましたが、数分経つとメモリ不足になってしまい、パソコンが強制的にシャットダウンされてしまいました。もしかしたら使っているパソコンのメモリが低いと大規模モデルはローカル環境で実行ができないのかもしれません。
LocalAIの使用上の注意点
公式ページに以下のように記載があります。
If running on Apple Silicon (ARM), it is not recommended to run on Docker due to emulation. Follow the build instructions to use Metal acceleration for full GPU support.
If you are running on Apple x86_64, you can use Docker without additional gain from building it from source.
和訳:Apple Silicon (ARM)上で実行する場合、エミュレーションのためDocker上での実行は推奨されません。 GPUをフルサポートするためにMetalアクセラレーションを使用する場合は、ビルド手順に従ってください。 Apple x86_64上で実行している場合は、ソースからビルドすることによる追加利益なしにDockerを使用できます。
Apple SiliconのMacを使用している場合にはDockerは使わずにHomebrewからインストール・実行が良さそうです。
また、モデルを使う際にインストールしていないライブラリなどがあるとエラーになってしまいます。
Library not loaded: /opt/homebrew/opt/abseil/lib/libabsl_flags_parse.2407.0.0.dylib
上記のようなエラーメッセージが出ていた場合にはライブラリが不足しており、モデルのロードに失敗していることになります。その場合には、一度LocalAIを終了して、brewコマンドで必要なライブラリをインストールしましょう。
3つ目にモデルのダウンロード先にHDDは使わないよう気をつけましょう。HHDを使用すると読み込みが遅くなってしまうためSSDの使用が推奨されています。公式ページのQ&Aにも記載されています。
llama-smoltalk-3.2-1b-instructを使ってみる
Phi-4だとメモリ不足で強制的にシャットダウンされてしまうので、もっと軽量モデルを使ってみたいと思います。
今回は「llama-smoltalk-3.2-1b-instruct」を使用します。使用手順は先ほどと同様です。
実施に動かしている様子はこちら。
日本語での応答は微妙です。ただ、英語で質問すると、ちゃんと返してくれていそうです。
回答はこちら
Llamas are intelligent and versatile animals that can do many things. Here are some examples:
Carry packs: Unlike other higher-altitude animals, llamas can carry a pack of up to 40 pounds (18 kg) to the summit of the world's highest peaks.
Begin athletic competitions: Llamas have been invited to participate in dog sledding competitions. They are well-suited for this niche because of their remarkable strength and intelligence.
Start their own businesses: Llamas can be great entrepreneurs, setting up their own businesses and then taking them to a walking or running life startup.
Take care of elderly animals: Llamas are ancient animals that might have great skills in caring for elderly animals. They're also great at walking dogs.
Be intelligent farm animals: Llamas are considered an intelligent farm animal. They're rather priceable, but they're worth the investment.
Be raised as companion animals: Llamas can be great companions for humans, with a friendly and efficient weight carrying capacity.
Go on walks with them: Llamas are excellent walking companions, despite the initial union time they need to spend with their partners.
Make great hiking partners: Llamas are flexible friends that make great hiking companions. They're perfect for showcasing the new trails you've been wanting to try.
Assist with pets: Llamas are good at helping with pets that live in isolated areas and are unable to be well-mothered.
Carry medical supplies: Llama camelid packs can be an effective pack to transport advanced medical supplies to remote places.
These animals can greatly contribute to our society in all they can do.
日本語訳はこちら
リャマは賢く、多才な動物で、さまざまなことができます。 例をいくつか挙げましょう。
荷物を運ぶ:他の高地動物とは異なり、リャマは40ポンド(18kg)までの荷物を世界の最高峰の山頂まで運ぶことができます。
競技会に参加する:リャマは犬ぞり競技会に招待されたことがあります。 驚くべき強さと知性を持つリャマは、この競技にうってつけです。
起業する:リャマは起業家としても優れており、自分のビジネスを立ち上げ、それをウォーキングやランニングのライフスタイルに変えることができます。
高齢動物の世話をする:リャマは古代から存在する動物であり、高齢動物の世話にも長けているかもしれません。また、犬の散歩も得意です。
賢い家畜になる:リャマは賢い家畜として知られています。値段は少々張りますが、その価値は十分にあります。
コンパニオンアニマルとして飼育する:ラマは人間にとって素晴らしいコンパニオンとなり、友好的で、人間を運ぶのに十分な体重を支えることができます。
一緒に散歩する:ラマは、パートナーと過ごす必要がある初期の結合時間を要するものの、素晴らしい散歩のパートナーとなります。
素晴らしいハイキングパートナーとなる:ラマは柔軟性のある友人であり、素晴らしいハイキングパートナーとなります。あなたが試してみたい新しいトレイルを案内するのに最適です。
ペットの世話を手伝う: 孤立した地域に住み、十分な世話を受けられないペットの世話を手伝うのに、リャマは適しています。
医療用品を運ぶ: リャマのラクダ科の動物は、遠隔地に高度な医療用品を運ぶのに有効なパックとなります。
これらの動物は、できることすべてにおいて、社会に大きく貢献することができます。
LLMのllamaについて質問をしたつもりでしたが、回答は生物としてのllamaについて返ってきている気がします。
ただ生物のllamaが「起業」するとは考えられないので、いまいちです。
LocalAIの活用方法
LocalAIは無料でローカル環境で使用できるので、非常に使いやすいかなと感じます。一方で使っているパソコンのスペックに左右されてしまうので、そこはなんとも言えない点です。
また、実際に使ってみて軽量モデルだからなのか、期待した回答を得ることができませんでした。軽量モデルに限定して言えば、使用用途がかなり限られると思います。
例えばブレストに活用したり簡単な初期開発などには活用ができるかもしれません。
試しにAIを使ったサービスを考えて、と指示を与えたところ以下の回答が返ってきました。
回答はこちら
Thank you for your interest in AI services! Here are a few examples of services that incorporate AI in various ways:
Virtual Assistants: Services like Siri, Alexa, Google Assistant use AI to understand and respond to voice commands, answer questions, set reminders, and control smart home devices.
Content Creation: AI-driven tools help generate blog posts, write articles, create short films, and even compose music. Services such as Contentful and ParaDMS offer AI-powered solutions for content creation and management.
Customer Service: AI chatbots and virtual assistants are integrated into many websites and apps to handle customer queries, resolve issues, and provide personalized service. Vuelve y Conversa is a popular chatbot marketplace.
Healthcare: AI plays a vital role in diagnostics and treatment. AI-driven medical imaging diagnostics systems like Tesla's AI Oncology Platform help detect diseases like cancer earlier through computer analyses.
Education: AI helps create personalized learning experiences by tailoring educational content and providing adaptive learning platforms. Coursera, EdX, and Khan Academy use AI to improve their educational offerings and meet diverse learning needs.
Marketing: AI is used for personalized marketing campaigns, predicting consumer behavior, and automating tasks in marketing automation platforms like HubSpot and Pardot.
These are just a few examples showcasing how AI impacts everyday life and various sectors. It's exciting to see how AI continues to evolve and enhance our digital world!
日本語訳はこちら
AIサービスにご興味をお持ちいただきありがとうございます。AIをさまざまな形で活用したサービスの一例をいくつかご紹介しましょう。
バーチャルアシスタント:Siri、Alexa、Googleアシスタントなどのサービスは、音声コマンドを理解して応答し、質問に答え、リマインダーを設定し、スマートホームデバイスを制御するためにAIを使用しています。
コンテンツ作成:AI駆動型のツールは、ブログ投稿の作成、記事の執筆、ショートフィルムの制作、さらには作曲までを支援します。ContentfulやParaDMSなどのサービスは、コンテンツ作成と管理のためのAI駆動型のソリューションを提供しています。
カスタマーサービス:AIチャットボットやバーチャルアシスタントは、多くのウェブサイトやアプリに統合され、顧客からの問い合わせへの対応、問題の解決、パーソナライズされたサービスの提供に役立っています。Vuelve y Conversaは人気のチャットボットマーケットプレイスです。
ヘルスケア:AIは診断や治療において重要な役割を果たします。テスラのAI腫瘍学プラットフォームのようなAI駆動型の医療画像診断システムは、コンピューター分析により、がんなどの病気をより早期に発見するのに役立ちます。
教育:AIは、教育コンテンツをカスタマイズし、適応学習プラットフォームを提供することで、個々の学習体験の創出を支援します。Coursera、EdX、Khan Academyは、AIを活用して教育内容の改善を図り、多様な学習ニーズに対応しています。
マーケティング:AIは、パーソナライズされたマーケティングキャンペーン、消費者行動の予測、HubSpotやPardotなどのマーケティングオートメーションプラットフォームにおけるタスクの自動化などに利用されています。
これらは、AIが日常生活やさまざまな分野にどのような影響を与えているかを示しているほんの一例です。AIがどのように進化し、私たちのデジタル世界を強化していくのか、非常に楽しみです。
こういったアイデア出しなどとしては非常に使い勝手が良さそうですが、深い思考を必要とするタスクには向かないと思います。
なお、Claudeでアプリを操作する方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
YAMLファイルの設定
モデルをダウンロードすると指定したフォルダ内にモデルとYAMLファイルが保存されます。
YAMLを使うことでLocalAIで使うモデルの設定や動作を細かく編集することが可能です。例えば、モデルのロード方法やプロンプトのテンプレ、初期設定などです。
ちなみにllama-smoltalk-3.2-1b-instructのYAMLファイルは以下のようになっています。
YAMLファイルの例はこちら
context_size: 8192
f16: true
function:
disable_no_action: true
grammar:
disable: true
response_regex:
- <function=(?P<name>\w+)>(?P<arguments>.*)</function>
mmap: true
name: llama-smoltalk-3.2-1b-instruct
parameters:
model: Llama-SmolTalk-3.2-1B-Instruct.Q4_K_M.gguf
stopwords:
- <|im_end|>
- <dummy32000>
- <|eot_id|>
- <|end_of_text|>
template:
chat: |
{{.Input }}
<|start_header_id|>assistant<|end_header_id|>
chat_message: |
<|start_header_id|>{{if eq .RoleName "assistant"}}assistant{{else if eq .RoleName "system"}}system{{else if eq .RoleName "tool"}}tool{{else if eq .RoleName "user"}}user{{end}}<|end_header_id|>
{{ if .FunctionCall -}}
Function call:
{{ else if eq .RoleName "tool" -}}
Function response:
{{ end -}}
{{ if .Content -}}
{{.Content -}}
{{ else if .FunctionCall -}}
{{ toJson .FunctionCall -}}
{{ end -}}
<|eot_id|>
completion: |
{{.Input}}
function: |
<|start_header_id|>system<|end_header_id|>
You have access to the following functions:
{{range .Functions}}
Use the function '{{.Name}}' to '{{.Description}}'
{{toJson .Parameters}}
{{end}}
Think very carefully before calling functions.
If a you choose to call a function ONLY reply in the following format with no prefix or suffix:
<function=example_function_name>{{`{{"example_name": "example_value"}}`}}</function>
Reminder:
- If looking for real time information use relevant functions before falling back to searching on internet
- Function calls MUST follow the specified format, start with <function= and end with </function>
- Required parameters MUST be specified
- Only call one function at a time
- Put the entire function call reply on one line
<|eot_id|>
{{.Input }}
<|start_header_id|>assistant<|end_header_id|>
編集後のYAMLファイルはこちら
context_size: 4096 # メモリ節約のため、コンテキストサイズを8192から4096に変更
f16: true # メモリ削減と性能向上のため16ビット精度を使用
function:
disable_no_action: true
grammar:
disable: true
response_regex:
- <function=(?P<name>\w+)>(?P<arguments>.*)</function>
mmap: true
name: llama-smoltalk-3.2-1b-instruct
parameters:
model: Llama-SmolTalk-3.2-1B-Instruct.Q4_K_M.gguf
stopwords:
- <|im_end|>
- <dummy32000>
- <|eot_id|>
- <|end_of_text|> # 生成の終了を明示するために追加
template:
chat: |
{{.Input }}
<|start_header_id|>assistant<|end_header_id|>
chat_message: |
<|start_header_id|>{{.RoleName}}<|end_header_id|>
{{ if .FunctionCall -}}
Function call:
{{ else if eq .RoleName "tool" -}}
Function response:
{{ end -}}
{{ if .Content -}}
{{.Content -}}
{{ else if .FunctionCall -}}
{{ toJson .FunctionCall -}}
{{ end -}}
<|eot_id|>
completion: |
{{.Input}}
function: |
<|start_header_id|>system<|end_header_id|>
以下の関数を利用できます:
{{range .Functions}}
- 関数名: '{{.Name}}'
説明: '{{.Description}}'
パラメータ: {{toJson .Parameters}}
{{end}}
関数呼び出し時のフォーマットは以下の通りです(プレフィックス/サフィックスなし):
<function=関数名>{{`{{"パラメータ名": "値"}}`}}</function>
注意:
- 関数呼び出し時には、必須パラメータをすべて含める必要があります。
- 関数呼び出しは1回につき1つのみ。
- 関数呼び出しの結果は1行で返してください。
<|eot_id|>
{{.Input }}
<|start_header_id|>assistant<|end_header_id|>
このようにYAMLファイルを使って細かく設定できるのはLocalAIの良いところだと思います。うまく設定できれば自分だけのモデルにすることも可能でしょう。
まとめ
本記事ではLocalAIの概要から使い方、活用事例について紹介をしました。
無料でローカル環境でLLMを使えるのは非常に魅力的です。その一方でLLMの大きさによっては使うことができず、軽量モデルを使わざるを得ないということもあります。
有料課金はしたくないけどLLMを使ってみたい、あまり複雑なタスクを要求しない、などであればLocalAIは非常に便利なツールになり得ます。
ぜひ本記事を参考にLocalAIを使ってみてください!
最後に
いかがだったでしょうか
生成AIをローカル環境で活用し、コストを抑えながら独自のAIソリューションを構築する最適な手法を見つけませんか?
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。