Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intel Mac で雑にローカルLLM その2 ~~雑にGPUも使ってみた~~

Intel Mac で雑にローカルLLM その2 ~~雑にGPUも使ってみた~~

Avatar for kenkino

kenkino

June 14, 2025
Tweet

More Decks by kenkino

Other Decks in Technology

Transcript

  1. 自己紹介 • 氏名:木下 兼一 • 趣味: – 家のインフラいじり – FreeBSD、Linux、Raspberry Pi

    いじり – サイクリング – キャンプ – ドローン(野外で飛ばせるのが欲しい&資格取らんと) – 小田原で有害鳥獣駆除のお手伝い – 猟銃所持(安全な取り扱い練習中) ※技術相談、執筆依頼等お伺いいたします。
  2. 使用したマシン • 16インチ MacBook Pro 2019 – CPU:2.4GHz intel Corei

    9 (8core 16thread) – GPU:AMD Radeon Pro 5500M 8GB – メモリ:64GB – ストレージ:1TB ※前回と同じです
  3. llama.cpp • リポジトリダウンロード – git clone https://github.com/ggerganov/llama.cpp.git • ビルド –

    makeがcmakeに変わってビルドが大幅に変更 https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md – パッケージ管理ソフトでcmakeをインストールして下記を実行  cmake -B build ← ビルド用のディレクトリ作成 –  cmake --build build --config Release -j 8 ← 実行ファイル作成 – gitでアップデート場合、一旦buildディレクトリを削除してから作り直し た方がよい
  4. llama.cpp • 実行ファイルが増えた – 以前は main のみだったが、色々と増えた – llama-cli :

    前回使っていたテキストベースでの実行 コマンド – llama-server : サーバーとして実行できるコマン ド、実行するとWebブラウザからアクセスして チャットとかを使える – その他多数
  5. 動かしてみる • 下記コマンドで実行 – ./buid/bin/llama-cli -ngl 0 -m 'Llama-3-ELYZA-JP-8B- Q4_K_M.gguf'

    -n 2048 -p 'あなたは誠実で優秀な日本人 のアシスタントです。仕事の熱意を取り戻すためのア イデアを5つ挙げてください。 ' -no-cnv • CPUだけで動かした方が早いのは変わらず・・・ – だと思ったが、ここ https://github.com/ollama/ollama/is sues/1016 での議論の内容を使ってみたらGPUで爆速 になってしまった・・・
  6. GPUで動かしてみる(パッケージ等のインストール) • 下記のパッケージをインストールする – $ brew install libomp ninja vulkan-headers

    glslang molten-vk shaderc vulkan-loader • MoltenVKというものをクローン・ビルド – $ git clone https://github.com/KhronosGroup/MoltenVK.git – $ cd MoltenVK – $ git fetch origin pull/2434/head:p2434 – $ git switch p2434 – $ ./fetchDependencies –macos – $ make macos
  7. GPUで動かしてみる(llama.cppのビルド) • 下記コマンドでビルド – $ cmake -B build -DLLAMA_CURL=1 -DGGML_METAL=OFF

    -DGGML_VULKAN=1 \ -DVulkan_INCLUDE_DIR=/usr/local/Cellar/molten-vk/1.3.0/include \ -DVulkan_LIBRARY=/usr/local/Cellar/molten-vk/1.3.0/lib/libMoltenVK.dylib \ -DOpenMP_ROOT=$(brew --prefix)/opt/libomp \ -DVulkan_GLSLC_EXECUTABLE=$(brew --prefix)/opt/shaderc/bin/glslc \ -DVulkan_GLSLANG_VALIDATOR_EXECUTABLE=$(brew --prefix)/opt/glslang/bin/glslangValidator \ -DOpenMP_C_FLAGS=-fopenmp=lomp \ -DOpenMP_CXX_FLAGS=-fopenmp=lomp \ -DOpenMP_C_LIB_NAMES="libomp" \ -DOpenMP_CXX_LIB_NAMES="libomp" \ -DOpenMP_libomp_LIBRARY="$(brew --prefix)/opt/libomp/lib/libomp.dylib" \ -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp $(brew --prefix)/opt/libomp/lib/libomp.dylib -I$(brew --prefix)/opt/libomp/include" \ -DOpenMP_CXX_LIB_NAMES="libomp" \ -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp $(brew --prefix)/opt/libomp/lib/libomp.dylib -I$(brew –prefix)/opt/libomp/include" – $ cmake --build build --config Release -j 8
  8. 結果 • GPU 使用 – llama_perf_context_print: eval time = 26647.52

    ms / 578 runs ( 46.10 ms per token, 21.69 tokens per second) – llama_perf_context_print: total time = 27707.62 ms / 626 tokens • CPUのみ – llama_perf_context_print: eval time = 133206.50 ms / 527 runs ( 252.76 ms per token, 3.96 tokens per second) – llama_perf_context_print: total time = 140521.50 ms / 572 tokens • 生成速度が5倍くらいに
  9. 学習モデル(ELYZA Llama3) • https://huggingface.co/mmnga/Llama-3-ELYZA- JP-8B-gguf • 自分の環境の中では一番それなりの回答を返して くる • 出力速度としては

    – CPUのみ:ChatGPTやGeminiより遅いが、まぁまぁ我 慢できる程度 – GPUオフロード:ChatGPTやGeminiに近い速度で生成
  10. 学習モデル(Phi 3) • https://huggingface.co/mmnga/Phi-3-mini-128k- instruct-gguf • 動作は軽い • しかし下記のような状態であまり実用的でない –

    英語や記号が混じった回答が出力 – 延々とテキストを出力してくる • GPUオフロードすると出力しない
  11. Intel Mac で使えるLLMツール • Sanctum : https://sanctum.ai – 出てきた当初はIntel Macで使うとエラーとなっていたが、現在は

    問題なく動作 • GPT4All : https://gpt4all.io/index.html?ref=localhost – 現時点ではIntel Macで一番使い勝手がいい • AnythingLLM : https://anythingllm.com ※未使用 – 多機能なAIツール – 基本有償LLMサービスを使うのだが、サービス設定でOllamaをつ かうことでローカルLLMを使うことも可能らしい
  12. Sanctum • Sanctum : https://sanctum.ai • モデルの一覧で、起動しているハードで無理なく動作 できるかをサジェストしてくれる • 日本語チャットの入力に少し難がある(日本語変換を

    確定した途端に質問を入力したと判定されるので、テ キストエディタで質問を書いてコピペするという技が 必要) • モデルを他のLLMツールとかと共有できない