1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBook M1でLlama 3.3を動かす方法 - ollamaとDocker比較

Posted at

はじめに

最近Llama 3.3を試してみたくなったので、MacBook M1で動かしてみた。ollamaを直接使う方法とDockerを使う方法の両方を試したので、その違いをまとめておく。

目次

前提条件

私の環境はこんな感じ。

  • MacBook with M1/M2/M3チップ
  • macOS Monterey以降
  • インターネット接続(モデルのダウンロード用)
  • 最低8GB RAM(16GB以上あると安心)

ollamaを使った方法

最初にollamaを試してみた。これが一番簡単だった。

1. Homebrewのインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 必要なツールをインストール

brew install php cmake ollama

3. Llama 3.3を動かしてみる

ollama run llama3.3

初回は結構時間がかかる。モデルをダウンロードしているから仕方ない。完了すると対話モードが始まる。

4. 次回以降

ollama run llama3.3

一度ダウンロードしてしまえば、次からはすぐに起動する。

5. APIとして使う

対話モードも良いけど、API経由で使いたい場合はこう。

ollama serve

別のターミナルから叩いてみる。

curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llama3.3",
  "prompt": "M1 MacBookの特徴を教えてください"
}'

Dockerを使った方法

環境を汚したくない場合はDockerを使う。

1. Dockerのインストール

brew install --cask docker

2. Dockerを起動

open -a Docker

3. Llama 3.3をDockerで動かす

# ollamaのイメージをpull
docker pull ollama/ollama

# コンテナ起動
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# Llama 3.3の実行
docker exec -it ollama ollama run llama3.3

4. APIとして使う

Dockerの場合は最初からサーバーモードで動いているので、すぐにAPIが使える。

curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llama3.3",
  "prompt": "M1 MacBookの特徴を教えてください"
}'

ollamaとDockerの比較

実際に両方使ってみた感想。

ollamaの良いところ

  1. とにかく簡単: インストールして即使える
  2. 軽い: Dockerのオーバーヘッドがない分、少し軽快
  3. 管理が楽: コマンド一発でモデル管理できる
  4. M1に最適化: Apple Siliconでの動作が安定している
  5. 更新も簡単: ollama pull llama3.3 だけ

Dockerの良いところ

  1. 環境が汚れない: システムに影響しない
  2. 再現性がある: 他の環境でも同じように動く
  3. 依存関係を気にしなくて良い: 全部コンテナに入ってる
  4. 削除が楽: 要らなくなったらコンテナごと消せる
  5. バージョン管理: 複数のバージョンを並行して使える

おすすめの使い方

個人的な感想だけど。

  • とりあえず試したい: ollamaが楽
  • 開発で使う: Dockerの方が良いかも
  • メモリが少ない: ollamaの方が軽い

高度な使い方

APIの確認

ollamaのAPIは基本的に http://localhost:11434 で固定。

# 生きてるか確認
curl http://127.0.0.1:11434

GUIも使える

コマンドラインが面倒な時はGUIクライアントもある。

  • OpenWebUI:

    pip install openwebui && python -m openwebui
    
  • LM Studio:
    https://lmstudio.ai/ からダウンロード

違うサイズのモデル

Llama 3.3は複数のサイズがある。

# 小さいモデル(メモリ8GBでも動く)
ollama run llama3.3:8b

# 大きいモデル(性能は良いがメモリを食う)
ollama run llama3.3:70b

PHPから使ってみる

PHPから叩く場合はこんな感じ。cURLを使うのが無難。

<?php
function callLlamaAPI($prompt, $model = 'llama3.3') {
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'http://localhost:11434/api/generate');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
        'model' => $model,
        'prompt' => $prompt,
        'stream' => false
    ]));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    curl_close($ch);
    
    if ($httpCode === 200) {
        $responseData = json_decode($response, true);
        return $responseData['response'];
    } else {
        throw new Exception("APIが失敗した。HTTPコード: $httpCode");
    }
}

// 使ってみる
try {
    $result = callLlamaAPI('M1 MacBookの特徴を教えてください');
    echo $result;
} catch (Exception $e) {
    echo "エラー: " . $e->getMessage();
}
?>

まとめ

MacBook M1でLlama 3.3を動かす方法を2つ試してみた。

  • とりあえず試すなら: ollama
  • ちゃんと開発するなら: Docker

どちらもそれなりに使えるので、用途に合わせて選べば良いと思う。ローカルで動くのでプライバシーも安心だし、M1 MacBookなら結構サクサク動く。

とりあえずLlama 3.3、想像以上に良い感じだった。

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?