Intel製グラフィックボードで大規模言語モデルを動かしたい

はじめに

自分が調べた内容を書き留めただけの記事です。

本文

touch-sp.hatenablog.com
Intel製グラフィックボードを購入したので最近色々調べています。

目標は、そのグラフィックボードを使って大規模言語モデルを実行することです。

調べていくと「〇〇 backend」という言葉が良く出てきます。例えば「CLBlast backend」「SYCL backend」「Vulkan backend 」などなど。意味わかりません。

NVIDIA製グラフィックボードにとっての「CUDA」みたいなものでしょうか?なぜ何個もあるのでしょうか?そしてどれを使ったらいいのか?


Intelのサイトにはこのように書かれていました。

With llama.cpp now supporting Intel GPUs, millions of consumer devices are capable of running inference on Llama. Compared to the OpenCL (CLBlast) backend, the SYCL backend has significant performance improvement on Intel GPUs.

DeepLで翻訳

llama.cppがIntel GPUをサポートしたことで、何百万ものコンシューマー・デバイスがLlama上で推論を実行できるようになった。OpenCL(CLBlast)バックエンドと比較して、SYCLバックエンドはIntel GPU上で大幅に性能が向上している。

「CLBlast」より「SYCL」の方が性能が向上する?「Vulkan」はどうなんだ?

分からないことだらけです。
目標に向かってゆっくり進んでいこうと思います。

補足1

「CLBlast」を使ってLLMを実行したという日本語の記事が一つだけ見つかりました。
qiita.com

補足2

こちらは英語になりますが「IPEX-LLM」というのを使った例もありました。
「IPEX-LLM」、これまた初めて聞く単語です。
ipex-llm.readthedocs.io

補足3

BingのCopilotに聞いてみました。
質問

ipex-llm vs SYCL intel arcではどちらを使うべき

回答

Intel Arc GPUを活用する際に、ipex-llmとSYCLの選択肢がありますね。それぞれの特徴と使いどころを見てみましょう。

IPEX-LLM:
概要: IPEX-LLMは、Intel CPUおよびGPU(例:ローカルPCのiGPU、Arc、Flex、MaxなどのディスクリートGPU)でLLM(Large Language Models)を実行するためのPyTorchライブラリです。
低遅延: 非常に低い遅延で動作します。
統合: Intel Extension for PyTorch(IPEX)の上で動作し、llama.cpp、transformers、bitsandbytes、vLLM、qlora、AutoGPTQ、AutoAWQなどの優れたプロジェクトとシームレスに統合されています。
最適化済みモデル: 50以上のモデルがipex-llmで最適化/検証されており、LLaMA2、Mistral、Mixtral、Gemma、LLaVA、Whisper、ChatGLM、Baichuan、Qwen、RWKVなどが含まれています。

SYCL:
概要: SYCLは、異種プロセッサ間でヘテロジニアスなプログラムを記述するためのオープン標準です。Intel Arc GPUはSYCLをサポートしています。
柔軟性: SYCLは異なるハードウェアアーキテクチャでプログラムを実行できるため、Intel Arc GPU以外のデバイスでも利用できます。
カスタム最適化: SYCLを使用することで、カスタム最適化を行い、特定のワークロードに適したコードを記述できます。
どちらを選ぶかは、具体的なユースケースと要件によります。IPEX-LLMはIntel Arc GPU向けに最適化されており、低遅延で動作するため、LLMタスクに適しているでしょう。一方、SYCLは柔軟性があり、異なるハードウェアで利用できるため、他のプロジェクトやワークロードにも適しています。

どちらを選ぶかは、具体的なユースケースと要件によります。IPEX-LLMはIntel Arc GPU向けに最適化されており、低遅延で動作するため、LLMタスクに適しているでしょう。一方、SYCLは柔軟性があり、異なるハードウェアで利用できるため、他のプロジェクトやワークロードにも適しています。