LLM Ollama Vulkan - eiichiromomma/CVMLAB GitHub Wiki

(LLM) Ollama+Vulkan

Ryzen AI 7でOllama

デフォルトだとOllamaはVulkanを無視する設定らしいので,環境変数で有効化してから起動が必要。インストールしてGUIの歯車で,ネットワーク理由を有効化したら,右下のアイコンから終了させる。

Powershellから

$env:OLLAMA_VULKAN=1
$env:OLLAMA_NUM_GPU=1
$env:OLLAMA_CONTEXT_LENGTH=8192

ollama serve

とする。

GLM-OCR

powershellで

ollama pull glm-ocr
$env:OLLAMA_VULKAN=1
$env:OLLAMA_NUM_GPU=1
$env:OLLAMA_CONTEXT_LENGTH=8192

ollama serve

としておく。

Ollamaのみが現状でVulkanで動かせる。 画像をBase64エンコードしてJSONに仕込んで放り込む必要があるのでpowershellの機能を使う。

Ollama serveとは別のPowershellから下記実行する。

ここではsc.pngという画像(適当にスクリーンショットを撮ったもの)がある前提。

$img = [Convert]::ToBase64String([IO.File]::ReadAllBytes("sc.png"))

$jsonPayload = @"
{
  "model": "glm-ocr",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "Extract all text and tables as Markdown." },
        { "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,$img" } }
      ]
    }
  ],
  "stream": false
}
"@

Get-Content payload.json -Raw | curl.exe http://localhost:11434/v1/chat/completions `
  -H "Content-Type: application/json" `
  -d '@-'

モデルがオフロードされたら数秒で結果が返ってくる。

GLM-OCR自体の導入はLLM MLX-VLM GLM-OCRとほぼ同じ。

winget install git

とした後で別のpowershellから

git clone https://github.com/zai-org/GLM-OCR.git
cd GLM-OCR
uv python pin 3.10
notepad pyproject.toml

で3.8を3.10に書き換える。

uv sync
uv pip install -e .
uv add git+https://github.com/huggingface/transformers.git
uv add -U torch torchvision
uv add -U --force-reinstall layoutparser
notepad glmocr/config.yaml

でglmocr/config.yamlの編集が必要で

  • ocr_apiのapi_port: 11434
  • ocr_apiのrequest_timeout: 600
  • max_workers: 1
  • page_loaderのmax_tokens: 8192

Ollama 専用の修正も必要

PRも出ているのだが,当然自身のサービスベースの機構なのでOllama使いたい層とはチグハグな状態で,現状だとglmocr/ocr_client.pyのtest_payloadを送ろうとした時点で400を起こすのでmodelを追加する必要がある。

notepad glmocr/ocr_client.py

でtest_payloadに1行追加する

test_payload = {
    "model": self.model or "glm-ocr", # modelを追加
    "messages": [
        {
            "role": "user",
            "content": [{"type": "text", "text": "hello"}],
        }
    ],
    "max_tokens": 10,
    "temperature": 0.1,
}

で,いよいよ実行

uv run glmocr parse image_name.png

そこそこ快適でASUSのPCのマニュアル90ページくらいを30分弱で出力できた。