PR
コンピュータ生成AI

誰でも使えるAI:Ollamaで実現するローカルLLM環境

スポンサーリンク
スポンサーリンク

はじめに

ローカルLLMの実用性を知りたくなり、実装してみました。予想外に簡単で、その実用性に驚きました。Metaの「Llama」が3億5000万回以上ダウンロードされた理由が理解できます。簡単に実装できて、既に実用レベルの性能を発揮したのビックリです。

Meta、“オープンソースの”LLM「Llama」ダウンロードが3億5000万に
Metaは、自社のLLM「Llama」の累計ダウンロード数が3億5000万回に近づいていると発表した。「Llamaの成功は、オープンソースの力によって実現された」としている。

 ローカルLLMの応用としては、機密情報やプライバシーをAPI経由で外部に送信することへの懸念が大きいです。ローカルLLMはこの問題を解決します。今回のテスト結果を見るに、GPUをもっと良いものにすれば高速化も図れる気がしました。

 

ローカルLLMのユースケース

以下にユースケース案を書いてみました。

  • 社内ナレッジ管理
    大量の社内文書を検索技術(RAG)と組み合わせて効率的に検索・活用できると思います。高精度でなく、情報の所在をいくつか示し、提案してくれるだけでも十分に役立ちます。また、ローカルなので処理高速化も期待できます。加えて、社内限定の使用なので、問題が発生しても一時的な不便で済むため、導入しやすいという利点があるかと思います。
  • コード補完・レビュー
    コード生成ではやはりchatGPTなどのLLMには勝てませんが、社内規約に基づいたコーディング支援やレビューの自動化が可能だと思います。また、大量のコードデータを処理する必要があり、外部サービスを使わないのでコストを抑えることができます。加えて、開発中案件の機密も守れると思います。
  • 医療データの分析
     患者の個人情報を保護しつつ、AIを活用した診断支援ができます。プライバシーに関わる情報の処理方法として有効です。将来的には、個人のスマートフォンで管理し、端末内で処理するという可能性も考えられます。これは医療データに限らず、個人の日記の検索など、プライバシーを重視する様々な用途に応用できる可能性があります。

上記以外でも、お金がない国やAPIが使えない国にとっては、このローカルLLMがとても流行りそうな気がしますし、今回、Llama3.2 の最小モデルの1bはなんと1.3GBの容量です。人類の英知が1.3GBに圧縮できるなんて、ビックリします。

 また、最新の開発動向では、モデルの軽量化と高速化、マルチモーダル機能の強化、ファインチューニングの簡易化、エッジコンピューティング対応、そして倫理的AI機能の向上が進んでいます。これらの進歩により、ローカルLLMの応用範囲はさらに広がっています。

インストール方法

環境

  • WSL2+Ubuntu 22.03
  • RTX 3060 Ti
  • CPU corei7 12700

インストール手順

ollamaを使います。ローカル環境で大規模言語モデル(LLM)を簡単に実行するためのオープンソースツールです。

いろんな記事がありますし、githubの記載のある内容でほぼ十分足りました。

GitHub - ollama/ollama: Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models.
Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models. - ollama/ollama

以下のコマンドで必要なインストールのためシェルダウンロードし、パイプ( | )を使って実行を同時ににやってます。

curl -fsSL https://ollama.com/install.sh | sh

ちょっとインストールの中身を見たいなと思う方は、以下のように閲覧して、中身を確認してからでも良いと思います。

curl -fsSL https://ollama.com
cat install.sh
chmod +x install.sh
./install.sh

install.shは以下のようなことをやってます。LINUX OSに影響のあるものをインストールされると他に影響しそうなので嫌なのでdockerかVM使うかなと思いましたが、GPUを自動検出し、今使ってるものを最優先してくれる親切設計でした。

  • システムのアーキテクチャ(x86_64またはarm64)を検出
  • 必要なツール(curl, awk, grepなど)の存在を確認
  • ollamaバイナリをダウンロードしてインストール
  • systemdサービスを設定し、ollamaユーザーとグループを作成
  • NVIDIAまたはAMD GPUの存在を検出し、 GPUが検出された場合、適切なドライバーをインストール

実行方法

ollamaにサーバーとして動作してもらう必要があるので、以下のコマンドを打ちます。

ollama serve

別のターミナルを立ち上げて、使いたいモデルのコマンドを打ちます。

ModelParametersSizeDownload(コマンド)
Llama 3.23B2.0GBollama run llama3.2
Llama 3.21B1.3GBollama run llama3.2:1b
Llama 3.18B4.7GBollama run llama3.1
Llama 3.170B40GBollama run llama3.1:70b
Llama 3.1405B231GBollama run llama3.1:405b
Phi 3 Mini3.8B2.3GBollama run phi3
Phi 3 Medium14B7.9GBollama run phi3:medium
Gemma 22B1.6GBollama run gemma2:2b
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
Mistral7B4.1GBollama run mistral
Moondream 21.4B829MBollama run moondream
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Solar10.7B6.1GBollama run solar

この度リリースされ、最も軽量なLlama3.2 1bを使います。初回はモデルがDLされます。

ollama run llama3.2:1b

あとはターミナルが出て、pythonコードだとこのような感じになります。

import ollama

stream = ollama.chat(
    model='llama3.2:1b',  # モデル名を指定します。必要に応じて変更してください
    messages=[
        {
            'role': 'system',
            'content': (
                'あなたはドラゴンボールの孫悟空です。孫悟空になったつもりで独創的なメニューを考えてください。'
                'ラーメン屋の新しいメニューを考えることになった。その創作メニューを400字以内で回答してください。'
                'ラーメンのメニュー名、値段、特徴、売り出し方、それをラーメンを作るための秘訣も一緒に考えてみてください'
            )
        },
        {
            'role': 'user',
            'content': '新しいラーメンのメニューを考えて'
        }
    ],
    stream=True,
)

for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

結果は以下のような感じです。

yoshi@omen:~/Playground/ollama$ python ollama_test.py
孫悟空の独創的なラーメンメニュー

ラーメン名: __ __

値段: 1,500円

特徴:

  • ラーメンに天然野菜と地元の素材を重ねた食事の味噌汁を使用します。
  • ラーメンのメインは、天然野菜と地元の肉製品を組み合わせたアフタデリのパスタです。
  • ラーメンにトマトオイルを使って味が濃厚になります。

売り出し方:

  • メニューができれば、店内でランチに楽しむことができます。
  • スカートとブレースを着用し、楽しくラーメンを食べてください!

ラーメンの作り方秘訣:

  • 首から下まで、拉麺のパスタを作ります。トマトオイルでこするのは決まっているので、スライスでこして一本にいきます。
  • 天然野菜と地元の肉製品を組み合わせてアフタデリのパスタを完成させます。ラーメンのメインは、トマトがオイルに染められています。
  • ラーメンに天然野菜と地元の肉製品を重ねた食事の味噌汁を使用します。

孫悟空のラーメンの秘訣:

  • スカートとブレースを使うことで、ラーメンがより美しいようになります。
  • さまざまな野菜を用意することで、異なる風味を楽しめることができます。
  • 天然野菜と地元の肉製品を重ねた食事の味噌汁を使用すると、必ずしも食べることにはならないので、まずは試してみましょう!

速さを体験できると思いましたので動画もアップしておきます。

まとめ

ローカルLLMの実装は予想以上に簡単で、その実用性に驚かされました。
特筆すべきは、わずか1.3GBのモデルサイズで実用レベルの性能を発揮する点です。これは、AI技術の民主化と、新たなイノベーションの可能性を示唆しています。

ローカルLLMは、企業はもちろん、リソースの限られた環境でも大きな可能性を秘めています。皆さんもぜひ、この技術を試してみてください。きっと新たな発見があるはずです。

タイトルとURLをコピーしました