日々徒然(趣味や仕事、地域「取手市周辺」の話題)

ローカルLLM(GLM-OCR)で座標表をOCR――CPU・内蔵GPU・専用GPUを比較

以前のテストで、軽量LLMであるGLM-OCRが座標表の読み取りにある程度使えるめどが立ちました。そこで今回は、CPUや内蔵GPUでどれくらい動かせるのかをテストしてみました。

PDFの座標表を切り抜き、ローカルAIで読み取り、SIMAデータにするために作成したアプリを使い、同じ9枚・256行の座標表で、PC構成による処理時間の違いを比較しました。

Windows 11・llama.cpp・GLM-OCR Q8_0で各条件を3回測定し、OCR時間の中央値を掲載しています。モデル起動、PDFの切り抜き、確認・修正、SIMA出力は計測外です。RTX 5060 Tiのみ、以前のglm-ocr:bf16による測定を参考として加えました。

テストに使った座標表9枚(TEST01〜TEST09、計256行)。掲載用に並べた画像です。
テストに使った座標表9枚(TEST01〜TEST09、計256行)。掲載用に並べた画像です。

CPUでの処理結果

表は左右にスクロールできます。

CPU RAM・メモリ設定 理論メモリ帯域 CPUスレッド数 9枚の処理時間
Ryzen AI MAX+ 395 128GB・LPDDR5X-8000 256.0GB/s 8 5分50秒
Ryzen AI MAX+ 395 128GB・LPDDR5X-8000 256.0GB/s 16 4分44秒
Ryzen 7 7840HS 32GB・DDR5-5600 89.6GB/s 8 6分13秒
Core i9-13900K 64GB・DDR5・設定4000(16GB×4) 64.0GB/s 8 6分30秒
Ryzen 7 5800U 16GB・LPDDR4X-4266 約68.3GB/s 8 18分28秒
Core Ultra 7 258V 32GB・LPDDR5X-8533 約136.5GB/s 4 19分27秒※

メモリ設定はログとメーカー仕様を照合。帯域は実測値ではなく、395は256-bit、その他はデュアルチャンネル(合計128-bit)として計算しています。スレッド数はアプリの指定値です。

CPUスレッド数は、システムやほかの作業への影響を考え、各CPUの最大スレッド数の半分を基準に設定しました。初回の測定では上限を8スレッドとし、395は半分に相当する16スレッドでも測定しました。

※258Vは1回目の1画像で接続エラーが発生したため、正常完了した2回の参考値です。その2回も15分52秒と23分02秒に分かれています。

Ryzen 7 7840HSは、Zen 4世代の8コア16スレッドCPUです。今回のOCRは8スレッド設定で実行しました。

395、7840HS、13900Kは、8スレッドで9枚を約6分で処理できました。少量の座標表をときどき読み取るなら、CPUでも使える結果です。一方、5800Uや今回の設定での258Vは20分前後かかり、日常業務で繰り返し使うには厳しいと感じます。

395は同じメモリ構成のまま16スレッドに増やすと、所要時間が18.8%短縮しました。入力処理は約29.7%、文字生成は約7.7%の短縮です。スレッド数を倍にしても速度は倍になりませんでしたが、約1分の短縮は実用上の違いになります。

395の理論メモリ帯域は7840HSの約2.86倍ですが、8スレッドでのOCR速度差は約1.07倍でした。5800Uと13900Kも、理論帯域が近い一方で処理時間には約3倍の差があります。395では同じメモリのままスレッド数を増やすと入力処理が約30%短縮したことから、CPU側の入力処理もボトルネックの一つとなり、メモリ帯域の差がそのままOCR速度に表れていない可能性があると考えられます。ただし実効帯域は未測定で、CPUの演算だけが原因とは断定できません。

GPUでの処理結果

表は左右にスクロールできます。

CPU GPU・処理方式 システムRAM 9枚の処理時間
Ryzen AI MAX+ 395 Radeon 8060S・Vulkan 128GB 2分00秒
Ryzen 7 7840HS Radeon 780M・Vulkan 32GB 3分28秒
Core i9-13900K Intel UHD 770・Vulkan 64GB 9分22秒
Core i9-13900K RTX 4090 24GB・CUDA 64GB 23.13秒
Ryzen 7 5800U AMD Radeon Graphics・Vulkan 16GB 11分23秒
Core Ultra 7 258V Intel Arc 140V・Vulkan 32GB 3分39秒
Ryzen 9 8945HX RTX 5060 Ti 16GB〈過去測定〉 64GB 51.48秒

RTX 5060 TiはUbuntu・Ollama・glm-ocr:bf16による1回の測定で、モデルロードとLAN経由の応答時間を含みます。画像は同じですが、今回のQ8_0・llama.cppとは条件が異なる参考値です。

Radeon 780MとArc 140Vは、どちらも約3分半でした。最近のノートPCで使われる内蔵GPUでも、少量の表を処理する用途なら使えそうです。ただし、UHD 770はCPUより遅く、GPUを使えば必ず速くなるわけではありません。

8060Sは約2分ですが、一般的な内蔵GPUとは性能差が大きいため、専用GPUとも比較しました。過去測定の5060 Tiは約51秒、今回の4090は約23秒です。今回の表では、5060 Tiでも1分以内に収まっています。

それにしても、CPUでは数分かかる9枚の座標表を、4090は約23秒で処理してしまいます。いつもながら、その圧倒的な性能にはビビります。

座標表9枚のOCR処理時間。RTX 4090は23.13秒。同じ9枚・256行。Windows 11、llama.cpp、GLM-OCR Q8_0、3回の中央値。短いほど速い。RTX 4090(CUDA):23.13秒。Radeon 8060S(Vulkan):119.98秒。Radeon 780M(Vulkan):208秒。Intel Arc 140V(Vulkan):219秒。Ryzen 7 7840HS(CPU・8スレッド):373秒。Core i9-13900K(CPU・8スレッド):390秒。Intel UHD 770(Vulkan):562秒。Radeon Graphics/5800U(Vulkan):683秒0120240360480600720RTX 4090(CUDA)23.13秒Radeon 8060S(Vulkan)119.98秒Radeon 780M(Vulkan)208秒Intel Arc 140V(Vulkan)219秒Ryzen 7 7840HS(CPU・8スレッド)373秒Core i9-13900K(CPU・8スレッド)390秒Intel UHD 770(Vulkan)562秒Radeon Graphics/5800U(Vulkan)683秒座標表9枚のOCR処理時間GLM-OCR Q8_0 / 9枚・256行RTX 409023.13秒Core i9-13900KのCPU処理(8スレッド)に対して約16.9倍の処理速度CPU:390秒(6分30秒) → RTX 4090:23.13秒OCR時間(秒) / 短いほど速いWindows 11・llama.cpp/3回の中央値。モデル起動などを除くOCR時間。条件が異なるRTX 5060 Tiの過去測定は含めていません。
座標表9枚のOCR処理時間。RTX 4090は23.13秒。同じ9枚・256行。Windows 11、llama.cpp、GLM-OCR Q8_0、3回の中央値。短いほど速い。RTX 4090(CUDA):23.13秒。Radeon 8060S(Vulkan):119.98秒。Radeon 780M(Vulkan):208秒。Intel Arc 140V(Vulkan):219秒。Ryzen 7 7840HS(CPU・8スレッド):373秒。Core i9-13900K(CPU・8スレッド):390秒。Intel UHD 770(Vulkan):562秒。Radeon Graphics/5800U(Vulkan):683秒0120240360480600720RTX 4090(CUDA)23.13秒Radeon 8060S(Vulkan)119.98秒Radeon 780M(Vulkan)208秒Arc 140V(Vulkan)219秒Ryzen 7 7840HS(CPU・8T)373秒Core i9-13900K(CPU・8T)390秒UHD 770(Vulkan)562秒5800U内蔵GPU(Vulkan)683秒座標表9枚のOCR処理時間GLM-OCR Q8_0 / 9枚・256行RTX 409023.13秒CPU処理より約16.9倍の速さCore i9-13900K・8スレッド:390秒OCR時間(秒) / 短いほど速いWindows 11・llama.cpp/3回の中央値条件が異なる5060 Tiの過去測定は含めていません。
今回測定したGPU6構成に、Core i9-13900KとRyzen 7 7840HSのCPU処理(各8スレッド)を加えた比較です。同じ9枚・256行、Windows 11・llama.cpp・GLM-OCR Q8_0でのOCR時間の中央値を示しています。条件が異なるRTX 5060 Tiの過去測定は、このグラフには含めていません。

表は左右にスクロールできます。

GPU 理論メモリ帯域 9枚の処理時間
Radeon 8060S 256GB/s(CPUと共用) 119.98秒
RTX 5060 Ti 448GB/s 51.48秒〈過去測定〉
RTX 4090 1,008GB/s 23.13秒

4090と5060 Tiは、帯域比が2.25倍、OCR全体の速度差が約2.23倍と近い数字になりました。ただしモデルの精度や実行環境が異なるため、帯域だけの効果とは断定できません。

今回の結果から

今回の測定では、正常に取得できた323画像・延べ9,183行が正解CSVと一致しました。258VのCPU処理で1画像の接続エラーがありましたが、取得できた結果に座標の不一致はありませんでした。同じ9枚を繰り返した結果なので、実際の図面では出力確認が必要です。

軽量なGLM-OCR Q8_0でも、CPUである程度の速度を出すなら、AMDは今回の7840HSを参考に、Zen 4世代以降・8コア以上を一つの目安にしたいと思います。Intelは第12世代以降の上位モデルくらいが目安です。メモリはDDR5/LPDDR5系・RAM 32GBを目安にします。

内蔵GPUなら、Radeon 760M/Intel Arc 130Vクラス以上を実用速度の目安に考えます。今回、780Mと140Vは約3分半で処理できたため、仕様上その一段下の760Mや130Vも、少量の座標表なら実用候補になると見込んでいます。

これは測定結果と仕様から考えた目安で、動作の必須条件ではありません。第12世代Core、760M、130Vは今回未測定です。

比較的新しい高性能CPUなら、それなりの速度で動くことは確認できました。395では16スレッドで5分も切れています。それでも、軽量なGLM-OCRで数分待つことを考えると、CPUや一般的な内蔵GPUで大量の表を繰り返し処理するのは、まだ厳しいというのが実感です。

以前のglm-ocr:bf16の測定でも、5060 Tiなら約51秒でした。このくらいの待ち時間になると、仕事で繰り返し使う姿が見えてきます。

この軽量モデルでも快適に動かすのはなかなか大変なのに、重量級LLMを自分のPCで動かしている人たちの、機材へのお金のかけ方には驚かされます。座標表のOCRを試していたはずが、最後は「ローカルLLMガチ勢のお金のかけ方はすごいなぁ」という感想になりました。

※各PCはAC給電で測定しましたが、温度やバックグラウンド負荷までは統一していません。

その他