LLM」カテゴリーアーカイブ

M3 UltraとDeepSeek R1 671Bのローカル性能検証

上記のビデオをNotebookLMに読ませて、次の問い合わせで得た情報

「モデルのサイズに応じたトークン/秒の値を表形式で表示して下さい。」

はい、最新Mac Studio M3 UltraでDeepSeek R1(671B)をローカル実行した際の性能について、モデルのサイズに応じたトークン/秒の値を表形式で以下に示します。

モデルサイズトークン/秒 (mlx)トークン/秒 (gguf)備考
1.5 billion約 230-262
7 billion約 113-116
14 billion約 50-62
32 billion約 29-32
70 billion約 15-16Llamaのクアンタイズモデル
671 billion (4bit)約 13-20約 7-17ggufはGPUオフロード設定により変動、mlxの方が高速な傾向

重要なポイント:

  • mlx形式のモデルは、Appleシリコンに最適化されているため、一般的にgguf形式よりも高いトークン/秒を記録しています。
  • 671 billionパラメータのモデル(4bitクアンタイズ)の場合、mlx形式でおおよそ13-20トークン/秒gguf形式ではGPUオフロードの設定により約7-17トークン/秒となっています。
  • gguf形式の671 billionパラメータモデルでは、GPUオフロードを最大に設定することで、トークン/秒が向上する傾向が見られました。ただし、ビデオRAMの使用量が上限に近づく可能性もあるため注意が必要です。
  • 一般的に、モデルのパラメータサイズが大きくなるほど、トークン/秒の値は低下する傾向にあります。

上記は、提供されたソースに基づいた情報です。特に断りのない限り、数値は動画内で示された計測値や言及に基づいています。

DGX sparkでLLMモデルのサイズ 8B,32B,40Bを実行したさい、予想される性能は?

Grokの答え

NVIDIA DGX Sparkは、NVIDIA GB10 Grace Blackwell Superchipを搭載し、最大2000億パラメータのAIモデルをローカルで処理できるデスクトップ型AIスーパーコンピューターです。128GBの統合メモリと1000 AI TOPS(FP4精度)の性能を持ち、大規模言語モデル(LLM)の推論やファインチューニングに適しています。以下に、8B、32B、40BのLLMモデルを実行した場合の予想性能を、利用可能な情報に基づいて推定します。

1. 8B(80億パラメータ)モデルの性能

  • 推論性能: 8Bモデルは比較的小規模で、DGX Sparkの128GBメモリに十分収まります。FP4精度での1000 TOPSの計算能力を考慮すると、推論速度は数十トークン/秒(tokens/second)が期待されます。類似システム(例:NVIDIA 4090 GPU)では、8Bモデルで50-100 tokens/secondが一般的であり、DGX Sparkはこれを上回るか同等の性能(おおよそ60-120 tokens/second)が見込まれます。
  • ファインチューニング: 8Bモデルはメモリ帯域幅(273 GB/s)や計算リソースの制約を受けにくく、効率的にファインチューニング可能。バッチサイズを大きく設定でき、数時間から1日程度で高品質なチューニングが完了すると予想されます。
  • 消費電力: 約200Wの低消費電力で動作し、8Bモデルでは電力効率が非常に高い。

2. 32B(320億パラメータ)モデルの性能

  • 推論性能: 32Bモデルはメモリ使用量が増加し、128GBのメモリ内で動作可能ですが、量子化(例:FP4や4-bit)が必要な場合があります。GTC 2025でのデモでは、32Bモデル(R1-32B)のLoRAファインチューニング後の推論が「十数トークン/秒」(約10-20 tokens/second)と報告されています。これは、メモリ帯域幅やモデルサイズのスケーリングによる制約が影響している可能性があります。
  • ファインチューニング: 32Bモデルのファインチューニングは可能ですが、メモリ帯域幅(273 GB/s)がボトルネックになる場合があります。デモではリアルタイムでのLoRAチューニングが示されており、数分から数時間で軽量なチューニングが完了する性能が期待されます。
  • 課題: トークン生成速度が生成量増加に伴い低下する傾向が報告されており、長時間の推論では性能がやや落ちる可能性があります。

3. 40B(400億パラメータ)モデルの性能

  • 推論性能: 40Bモデルは32Bモデルよりさらにメモリを要求しますが、DGX Sparkの128GBメモリで量子化を活用すれば動作可能。推論速度は32Bモデルより若干低下し、10-15 tokens/second程度が現実的な範囲と考えられます。これは、メモリ容量と帯域幅の制約によるものです。
  • ファインチューニング: 40Bモデルのファインチューニングは可能ですが、効率的な量子化やバッチサイズの調整が必要。32Bモデル同様、LoRAなどの軽量手法なら数時間で完了する可能性が高いが、フルファインチューニングはメモリ制約から時間がかかる(1日以上)。
  • スケーラビリティ: 2台のDGX SparkをNVIDIA Connect-Xで接続すれば、最大4050億パラメータのモデルに対応可能ですが、40Bモデル単体では1台で十分動作します。

全体的な考察と注意点

  • メモリ制約: DGX Sparkの128GBメモリのうち、ユーザーデータ用は約100GBとされており、システムが28GBを占有します。これにより、32Bや40Bモデルでは量子化(FP4や4-bit)が必須となる場合があります。
  • 比較: 32BモデルをNVIDIA 4090(24GB VRAM)で動作させる場合、量子化を強く適用してもDGX Sparkより高速(20-30 tokens/second)な場合がありますが、メモリ容量の制約でファインチューニングは困難。DGX Sparkは大容量メモリと統合ソフトウェアスタック(NVIDIA AIソフトウェア)の利点で、推論とチューニングの両方でバランスが良い。
  • 電力効率: 200Wの低消費電力は、データセンター級の性能をデスクトップで実現する上で魅力的。8Bモデルでは余裕があり、32Bや40Bでも実用的な性能を発揮。
  • 実測値の不足: 現時点で具体的なベンチマーク(例:トークン生成速度の公式数値)が公開されておらず、推定はデモや類似システムに基づいています。実際の性能はモデル構造や最適化に依存します。
モデルサイズ推論性能 (tokens/second)ファインチューニング時間メモリ制約と注意点
8B60-120数時間128GBメモリで余裕あり。高速かつ効率的。
32B10-20数分~数時間 (LoRA)量子化推奨。メモリ帯域幅がボトルネックになる可能性。
40B10-15数時間~1日量子化必須。32Bよりやや低速、メモリ制約厳しい。

: 性能は量子化(FP4/4-bit)使用時の推定値。実測値はモデルやタスクにより変動する可能性あり。

手持ちのPCで実行した結果(数値はトークン/秒)

NucBox_M7 Pro Ryzen 9 PRO 6950HRTX3080+GTX1080
gemma3:4b15.3122.9
deepseek-r1:8b9.528.6
gemma3:12b20 – 25.9
deepseek-r1:32b3 – 4

LOCAL LLM ollama

pdfファイルをアップロードしてRAG(Retrieval-Augmented Generation)

参考動画 installの参考

https://www.youtube.com/watch?v=1xdneyn6zjw

Step 1: Install Ollama https://ollama.com/
Step 2: Copy and Paste Llama 3 install command using Terminal
Step 3: Add other LLM models (optional) https://ollama.com/library
Step 4: Install Docker https://www.docker.com/
Step 5: Install OpenWebUI https://docs.openwebui.com/getting-st...
Login to OpenWebUI and start using your local AI chatbot.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
STEP1:ollamaの実行
C:\Users\ei2k-> ollama.exe run llama3.1

STEP2:docker desktop実行

STEP3:dockerでopen-webuiを実行
C:\Users\ei2k-> docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

LLM活用のプロンプト・テクニック

出典:

  • 1、孫正義式ディベートプロンプト 【〇〇な】Aさん、【〇〇な】Bさん、【〇〇な】Cさん あなたがたならこの問題をどう解決するか 私の目の前でディベートしてください 問題 【〇〇】
  • 2、AIを詰める?パワハラプロンプト ありがとうございます、この出力を60点とします これを60点とした時に100点とはどのようなものですか? 100点にするために足りないものを列挙した後に 100点の答えを生成してください
  • 3、分かりやすい回答に改善するプロンプト 【〇〇】について 人と人が対話する物語形式で 分かりやすく解説してください
  • 4、シンガポール発CO-STARフレームワーク (C) コンテキスト:【〇〇】 (O) 目標:【〇〇】 (S) スタイル:【〇〇】 (T) トーン:【〇〇】 (A) 対象読者:【〇〇】 (R) 応答:以下の形式で回答を構成してください: 1.【〇〇】 2.【〇〇】 3.【〇〇】
  • 5、段階理解プロンプト 「【〇〇】」 ↑の文言を意味を保ったまま別の言葉に言い換えてください
  • 6、プロンプトを短縮して精度向上 https://chatgpt.com/g/g-G7bqU5uCZ-lis…
  • 7、ハルシネーションを避けるプロンプト手法 【〇〇】 わからないことは「知らない」と答えてください。
  • ゴール(目的)
  • 前提(AIの役割、自分の状況)
  • 出力形式(表、json…)
  • ステップ
  • 例示

https://www.perplexity.ai/search/sekiyuriteizhuan-men-jia-asan-EjFLfr6eTEC4waiY5_ZRXQ

Stream deffisionのインストール

秒100枚の画像生成ができるという「Stream Diffusion」を動かしてみる。

git clone https://github.com/cumulo-autumn/StreamDiffusion.git

Step1 環境設定

python3 -m venv .venv

Step2: Install PyTorch

pip3 install torch==2.1.0 torchvision==0.16.0 xformers –index-url https://download.pytorch.org/whl/cu121

Step3: Install StreamDiffusion

#for Latest Version (recommended)

pip install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]

WSL2の環境へStablefussion WebUiをインストール

Windows11で新規ユーザを作成(きれいな環境へインストールするため)
作成したユーザでログイン
wslをインストール (Ubuntu22.04)
$sudo apt update
$sudo apt upgrade
$sudo apt install wget git python3 python3-venv
$git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
----------以下、発生したエラー対処----
$sudo apt-get install libgl1-mesa-dev
---Debianで必要---
$sudo apt-get install libglib2.0-0
------------------
$cd stable-diffusion-webui
$ python3 -m venv venv/
$vim webui-user.sh
13行目 コメントを外して、cudaを使わない
export COMMANDLINE_ARGS="--skip-torch-cuda-test --precision full --no-half"

$./webui.sh
4GBのファイルを含む、多くのファイルをダウンロードするので、それなりに時間がかかります。
............
Running on local URL:  http://127.0.0.1:7860
ブラウザーで上記アクセス
N5095では次の警告が出るが、画像生成は問題なく完了。
[W NNPACK.cpp:53] Could not initialize NNPACK! Reason: Unsupported hardware.█
対策 USE_NNPACK=0