1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Intel GPUでPyTorchを動かす:Intel Extension for PyTorch導入メモ(PowerShell)

Last updated at Posted at 2026-01-24

Intel Arcを搭載したノートパソコンを購入したので、AI開発の低レイヤーライブラリーが動かないか試行錯誤したメモです。
記事内ではIntel GPUを使用した支援のXPUと呼称します。
タイトルとにらめっこしてたら微妙だったので変えました。

前提環境

ハードウェア

  • Intel GPUカードまたはIntel Core Ultra CPUを搭載しているマシン
    • Intel® Arc™ B-Series Graphics
    • Intel® Arc™ A-Series Graphics
    • Intel® Core™ Ultra Series 2 Mobile Processors (Arrow Lake-H)
    • Intel® Core™ Ultra Series 2 with Intel® Arc™ Graphics (Lunar Lake-V)
    • Intel® Core™ Ultra Processors with Intel® Arc™ Graphics (Meteor Lake-H)

ソフトウェア

  • OS: Windows 11
  • グラフィックドライバ: とりあえず最新(Intel Arc Graphis Driver 32.0.101.6554)
  • Python: 3.12(今回はmise上にのせた)

TL;DR

  • 手順はIntelが出してる これ に沿えば行ける。
  • でもmise+uv環境でどうにかしたい。
  • 四苦八苦してuvでも動いた!

まずは普通にpipで

この項はIntel Extension for PyTorch Installation Guideのトレスです。
こちら(https://pytorch-extension.intel.com/installation) にアクセスして手順を表示しておきましょう。

image.png

  1. Pythonが動く環境を何らかの方法で用意します。

    • 先駆者がいろいろ記事を出しているのでここでは割愛
  2. 適当な開発ディレクトリにvenvを作ってアクティブ化する。

    PS > python.exe -m venv .venv
    PS > .\.venv\Scripts\activate
    (.venv) PS >
    
  3. Torchをインストールする(XPU指定)

    PS > python -m pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/xpu
    (いろいろ出力される)
    Successfully installed MarkupSafe-2.1.5 dpcpp-cpp-rt-2025.1.1 filelock-3.20.0 fsspec-2025.12.0 intel-cmplr-lib-rt-2025.1.1 intel-cmplr-lib-ur-2025.1.1 intel-cmplr-lic-rt-2025.1.1 intel-opencl-rt-2025.1.1 intel-openmp-2025.1.1 intel-pti-0.12.3 intel-sycl-rt-2025.1.1 jinja2-3.1.6 mkl-2025.1.0 mpmath-1.3.0 networkx-3.6.1 numpy-2.3.5 onemkl-sycl-blas-2025.1.0 onemkl-sycl-dft-2025.1.0 onemkl-sycl-lapack-2025.1.0 onemkl-sycl-rng-2025.1.0 onemkl-sycl-sparse-2025.1.0 pillow-12.0.0 pytorch-triton-xpu-3.4.0 setuptools-70.2.0 sympy-1.14.0 tbb-2022.1.0 tcmlib-1.3.0 torch-2.8.0+xpu torchaudio-2.8.0+xpu torchvision-0.23.0+xpu typing-extensions-4.15.0 umf-0.10.0
    
  4. Intelの手順通りに続けてintel-extension-for-pytorchをインストールしようとするとパッケージが足りないと怒られるので、psutilpackagingをあらかじめインストールする。

    (.venv) PS > python -m pip install psutil packaging
    
  5. intel-extension-for-pytorch をインストール

    (.venv) PS > python -m pip install intel-extension-for-pytorch==2.8.10+xpu --index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/us/
    
  6. これでPytorchが動くはず。テストスクリプトを動かす。

    (.venv) PS > python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.__version__); print(ipex.__version__); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"
    
    (初回実行時結構待ちます。5分ほどお待ちを…)
    
    # こんなのが出ればOK
    [0]: _XpuDeviceProperties(name='Intel(R) Arc(TM) 140T GPU (16GB)', platform_name='Intel(R) oneAPI Unified Runtime over Level-Zero', type='gpu', driver_version='1.6.31896', total_memory=16797MB, max_compute_units=128, gpu_eu_count=128, gpu_subslice_count=16, max_work_group_size=1024, max_num_sub_groups=128, sub_group_sizes=[8 16 32], has_fp16=1, has_fp64=1, has_atomic64=1)
    

おめでとうございます。これでIntel GPUの支援下でTorchが使えます。

uv環境でこの環境を作成する

AI開発でPythonはuvで管理されている方も多いと思います。
ネイティブにインストールしたPythonだと不便なのでこれをuv環境下に移植します。

uvはパッケージの依存管理が厳密

pipでは管理がかなり緩いため、前項のようにサクッと動きましたがuvではそうサクッとは行きません。

結論

intel-extension-for-pytorch関連で403エラーが頻発するので、uvの時点で管理する物を明示しています。

pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "Your-Torch-XPU-Project"
version = "0.1.0"
description = "Intel XPU Environment"
requires-python = ">=3.12"
dependencies = [
    "markupsafe==2.1.5",
    "filelock==3.20.0",
    "jinja2==3.1.6",
    "networkx==3.6.1",
    "numpy==2.3.5",
    "pillow==12.0.0",
    "psutil==7.2.1",
    "mpmath==1.3.0",
    "sympy==1.14.0",

    # --- Torch (XPU) ---
    "torch==2.8.0",
    "torchaudio==2.8.0",
    "torchvision==0.23.0",

    # --- IPEX (Intel Extension) ---
    "intel-extension-for-pytorch==2.8.10+xpu",
]

[tool.uv]
package = false

# --- 1. PyTorch公式 XPUリポジトリ ---
[[tool.uv.index]]
name = "pytorch-xpu"
url = "https://download.pytorch.org/whl/xpu"
explicit = false  # これにより triton 等の隠れた依存関係が見つかるようになりました

# --- 2. Intel公式 IPEXリポジトリ ---
[[tool.uv.index]]
name = "intel-ipex"
url = "https://pytorch-extension.intel.com/release-whl/stable/xpu/us/"
explicit = true   # 403回避のために管理

# --- ソース割り当て ---
[tool.uv.sources]
# PyTorch関連
torch = { index = "pytorch-xpu" }
torchaudio = { index = "pytorch-xpu" }
torchvision = { index = "pytorch-xpu" }

# IPEX
intel-extension-for-pytorch = { index = "intel-ipex" }

ここまで出来れば uv sync でサクッと環境が作れます。

PS > uv sync
Using CPython 3.12.12 interpreter at: C:\Users\me\AppData\Local\mise\installs\python\3.12.12\python.exe
Creating virtual environment at: .venv
Resolved 39 packages in 2.22s
Installed 35 packages in 2.75s

ベンチマーク

CPUで演算した場合とIntel GPU(XPU)で演算した場合の差を計測しました。

ベンチマークスクリプト

Geminiに作って貰いました。
処理内容は「行列積(Matrix Multiplication)」を行い、CPUとXPU(Intel GPU)の演算速度を比較するものです。

行列のサイズを変えることで処理を大小を変えられます。

benchmark_xpu.py
import torch
import intel_extension_for_pytorch as ipex
import time
import sys

def run_benchmark():
    # --- 設定 ---
    # 行列のサイズ (N x N)
    MATRIX_SIZE = 16384
    
    print(f"--- Intel XPU Benchmark Environment ---")
    print(f"Python: {sys.version.split()[0]}")
    print(f"Torch:  {torch.__version__}")
    print(f"IPEX:   {ipex.__version__}")
    
    if not torch.xpu.is_available():
        print("Error: XPU device not found!")
        return

    device_name = torch.xpu.get_device_properties(0).name
    print(f"Device: {device_name}")
    print("-" * 40)
    print(f"Task: Matrix Multiplication ({MATRIX_SIZE}x{MATRIX_SIZE}) Float32")
    print("-" * 40)

    # --- 1. CPUでの計測 ---
    print("Running on CPU... (Please wait)")
    try:
        # データ作成
        a_cpu = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device="cpu")
        b_cpu = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device="cpu")

        # 修正点: ipex.optimize はモデルがない場合エラーになることがあるため削除
        # import intel_extension_for_pytorch している時点で
        # OneDNNなどの基本的なCPU最適化は自動的に有効になっています。

        # ウォームアップ
        _ = torch.matmul(a_cpu, b_cpu)

        # 計測開始
        start_time = time.time()
        c_cpu = torch.matmul(a_cpu, b_cpu)
        cpu_time = time.time() - start_time
        
        print(f"CPU Time: {cpu_time:.4f} sec")

    except Exception as e:
        print(f"CPU Benchmark Failed: {e}")
        # 詳細なエラートレースを表示したい場合はコメントアウトを外す
        # import traceback
        # traceback.print_exc()
        cpu_time = float('inf')

    print("-" * 20)

    # --- 2. XPU (GPU) での計測 ---
    print("Running on XPU... (Please wait)")
    try:
        # データ作成 (XPUへ転送)
        a_xpu = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device="xpu")
        b_xpu = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device="xpu")

        # ウォームアップ
        _ = torch.matmul(a_xpu, b_xpu)
        torch.xpu.synchronize() # 処理完了を待つ

        # 計測開始
        start_time = time.time()
        c_xpu = torch.matmul(a_xpu, b_xpu)
        torch.xpu.synchronize() # 処理完了を待つ
        xpu_time = time.time() - start_time

        print(f"XPU Time: {xpu_time:.4f} sec")

    except Exception as e:
        print(f"XPU Benchmark Failed: {e}")
        xpu_time = float('inf')

    # --- 結果表示 ---
    print("=" * 40)
    if xpu_time < cpu_time and cpu_time != float('inf'):
        speedup = cpu_time / xpu_time
        print(f"Result: XPU is {speedup:.2f}x faster than CPU 🚀")
    elif cpu_time == float('inf'):
         print("Result: CPU Failed, but XPU is working perfectly! 🚀")
    else:
        print("Result: CPU was faster (Increase matrix size?)")
    print("=" * 40)

if __name__ == "__main__":
    run_benchmark()

ベンチマーク結果

CPUで処理するより、 XPUで処理した方が3.5倍ほど高速になりました! (ノ´∀`)ノ
Nvidia GPUと比較すれば非力ですが、大分普及したいわゆるAIパソコンのリソースを開発に活用できるのはとても喜ばしいことかと思います!

--- Intel XPU Benchmark Environment ---
Python: 3.12.12
Torch:  2.8.0+xpu
IPEX:   2.8.10+xpu
Device: Intel(R) Arc(TM) 140T GPU (16GB)
----------------------------------------
Task: Matrix Multiplication (16384x16384) Float32
----------------------------------------
Running on CPU... (Please wait)
CPU Time: 9.9230 sec
--------------------
Running on XPU... (Please wait)
XPU Time: 2.8024 sec
========================================
Result: XPU is 3.54x faster than CPU 🚀
========================================

開発の仕方

XPU環境ではTorchを使用したPythonスクリプトを書く際に次のようにインポートすれば良いようです。

import torch
import intel_extension_for_pytorch as ipex

後は普段通りにtorchを呼べばOK

まとめ

近年は家電量販店でAI PCと呼ばれるパソコンが普及してきました。
しかしローカルで実用的に動作するAIモデルはまだまだ少なく、一部のソフトウェアの機能支援に使われる程度に留まっています。

これをAI製品開発に有効活用できれば良いのにを思いながら、WindowsノートPCを買い換えたのでチャレンジしてみました。
Nvidia GPU・CUDAと比較すれば動作安定性や開発ツールの整備はまだまだだなと感じますがTorchなどAI開発における低レイヤー部分が動けば趣味レベル~PoCレベルでは十分に価値があるのではないでしょうか。

手元のPCのリソース活用につながれば幸いです。
誤りがあれば優しく教えてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?