捷徑

安裝說明

注意: 最新的安裝說明已嵌入 FBGEMM 儲存庫中 setup_env.bash 內建的一組腳本中。

安裝 FBGEMM_GPU 的一般步驟如下

  1. 設定隔離的建置環境。

  2. 為僅限 CPU、CUDA 或 ROCm 執行階段設定工具鏈。

  3. 安裝 PyTorch。

  4. 安裝 FBGEMM_GPU 套件。

  5. 執行安裝後檢查。

FBGEMM 版本相容性表

FBGEMM 依照 PyTorch 版本發布排程發布,且每個版本皆不保證能與早於 FBGEMM 版本所對應的 PyTorch 版本協同運作。

FBGEMM 版本

對應的 PyTorch 版本

支援的 Python 版本

支援的 CUDA 版本

支援的 CUDA 架構

(實驗性)支援的 ROCm 版本

(實驗性)支援的 ROCm 架構

1.1.0

2.6.x

3.9, 3.10, 3.11, 3.12, 3.13

11.8, 12.4, 12.6

7.0, 8.0, 9.0, 9.0a

6.1, 6.2.4, 6.3

gfx908, gfx90a, gfx942

1.0.0

2.5.x

3.9, 3.10, 3.11, 3.12

11.8, 12.1, 12.4

7.0, 8.0, 9.0, 9.0a

6.0, 6.1

gfx908, gfx90a

0.8.0

2.4.x

3.8, 3.9, 3.10, 3.11, 3.12

11.8, 12.1, 12.4

7.0, 8.0, 9.0, 9.0a

6.0, 6.1

gfx908, gfx90a

0.7.0

2.3.x

3.8, 3.9, 3.10, 3.11, 3.12

11.8, 12.1

7.0, 8.0, 9.0

6.0

gfx908, gfx90a

0.6.0

2.2.x

3.8, 3.9, 3.10, 3.11, 3.12

11.8, 12.1

7.0, 8.0, 9.0

5.7

gfx90a

0.5.0

2.1.x

3.8, 3.9, 3.10, 3.11

11.8, 12.1

7.0, 8.0, 9.0

5.5, 5.6

gfx90a

0.4.0

2.0.x

3.8, 3.9, 3.10

11.7, 11.8

7.0, 8.0

5.3, 5.4

gfx90a

請注意,支援的 CUDA 和 ROCm 架構列表是指預設安裝套件中可用的目標支援,為其他架構建置可能可行,但不保證。

如需更多資訊,請造訪

設定僅限 CPU 環境

依照 設定隔離的建置環境 中的 Conda 環境設定說明,然後依照 安裝 Python 函式庫 中的說明。

設定 CUDA 環境

FBGEMM_GPU 的 CUDA 變體需要機器上安裝 NVIDIA GPU,以及運作正常的 NVIDIA 驅動程式;否則,函式庫將會回退到執行 CPU 版本的運算子。

FBGEMM_GPU CUDA 套件目前僅為 SM70 和 SM80 架構(分別為 V100 和 A100 GPU)建置。支援其他架構可以透過從頭開始建置套件來達成,但不保證能運作(尤其是對於較舊的架構)。

安裝 NVIDIA 驅動程式

NVIDIA 顯示驅動程式必須在所有其他環境設定之前安裝在系統上。NVIDIAPyTorch 提供的步驟是執行此操作最權威的說明。可以使用 nvidia-smi 命令驗證驅動程式設定

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.76       Driver Version: 515.76       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A10G         Off  | 00000000:00:1E.0 Off |                    0 |
|  0%   31C    P0    59W / 300W |      0MiB / 23028MiB |      2%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

設定 CUDA Docker 容器和 Conda 環境

建議(但非必要)透過 Docker 設定安裝和執行 FBGEMM_GPU,以實現 CUDA 環境的隔離和可重現性。

需要安裝 NVIDIA-Docker 執行階段,才能將驅動程式暴露給容器。PyTorch 提供的安裝步驟詳細說明了如何達成此目的。

完成後,依照 CUDA Docker 映像檔 中的說明提取 CUDA Docker 映像檔並啟動容器。

從那裡開始,可以透過 Conda 建構其餘的執行階段環境。依照 設定隔離的建置環境 中的 Conda 環境設定說明,然後依照 安裝 Python 函式庫 中的說明。

安裝 CUDA 執行階段

如果作業系統/Docker 環境尚未包含完整的 CUDA 執行階段,請依照 安裝 CUDA 中的說明在 Conda 環境中安裝 CUDA 工具組。

設定 ROCm 環境

FBGEMM_GPU 的 ROCm 變體需要機器上安裝 AMD GPU,以及運作正常的 AMDGPU 驅動程式;否則,函式庫將會回退到執行 CPU 版本的運算子。

安裝 AMDGPU 驅動程式

AMDGPU 顯示驅動程式必須在所有其他環境設定之前安裝在系統上。AMD 提供的步驟是執行此操作最權威的說明。可以使用 rocm-smi 命令驗證驅動程式設定

rocm-smi

======================= ROCm System Management Interface =======================
================================= Concise Info =================================
GPU  Temp (DieEdge)  AvgPwr  SCLK    MCLK     Fan  Perf  PwrCap  VRAM%  GPU%
0    33.0c           37.0W   300Mhz  1200Mhz  0%   auto  290.0W    0%   0%
1    32.0c           39.0W   300Mhz  1200Mhz  0%   auto  290.0W    0%   0%
2    33.0c           37.0W   300Mhz  1200Mhz  0%   auto  290.0W    0%   0%
================================================================================
============================= End of ROCm SMI Log ==============================

設定 ROCm Docker 容器和 Conda 環境

建議(但非必要)透過 Docker 設定安裝和執行 FBGEMM_GPU,以實現 ROCm 環境的隔離和可重現性,ROCm 環境可能難以設定。

依照 ROCm Docker 映像檔 中的說明提取完整的 ROCm Docker 映像檔並啟動容器。

從那裡開始,可以透過 Conda 建構其餘的執行階段環境。依照 安裝 ROCm 中的 Conda 環境設定說明,然後依照 安裝 Python 函式庫 中的說明。

安裝 Python 函式庫

安裝用於 FBGEMM_GPU 的相關 Python 函式庫

conda install -n ${env_name} -c conda-forge --override-channels -y \
    hypothesis \
    numpy \
    scikit-build

安裝 PyTorch

依照 安裝 PyTorch 中的說明在 Conda 環境中安裝 PyTorch。

安裝 Triton

本節僅適用於使用實驗性的 FBGEMM_GPU GenAI 模組。Triton 應已與 PyTorch 安裝套件一起封裝。可以使用以下方式驗證:

conda run -n ${env_name} python -c "import triton"

如果 Triton 無法使用,可以透過 PyTorch PIP 安裝

# Most recent version used can be found in the build scripts
TRITON_VERSION=3.0.0+45fff310c8

conda run -n ${env_name} pip install \
  --pre pytorch-triton==${TRITON_VERSION} \
  --index-url https://download.pytorch.org/whl/nightly/

關於 PyTorch-Triton 版本的資訊可以在 這裡 找到。

安裝 FBGEMM_GPU 套件

透過 PyTorch PIP 安裝

PyTorch PIP 是安裝 FBGEMM_GPU 的首選管道

# !! Run inside the Conda environment !!

# CPU-only Nightly
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cpu/
pip install --pre fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cpu/

# CPU-only Release
pip install torch --index-url https://download.pytorch.org/whl/cpu/
pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/cpu/

# CUDA Nightly
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu126/
pip install --pre fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cu126/

# CUDA Release
pip install torch --index-url https://download.pytorch.org/whl/cu126/
pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/cu126/

# ROCm Nightly
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/rocm6.3/
pip install --pre fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/rocm6.3/

# Test the installation
python -c "import torch; import fbgemm_gpu"

透過公開 PyPI 安裝

# !! Run inside the Conda environment !!

# CPU-Only Nightly
pip install fbgemm-gpu-nightly-cpu

# CPU-Only Release
pip install fbgemm-gpu-cpu

# CUDA Nightly
pip install fbgemm-gpu-nightly

# CUDA Release
pip install fbgemm-gpu

截至撰寫本文時,FBGEMM_GPU 的 ROCm 變體套件尚未發布到公開 PyPI。

安裝後檢查

安裝後,執行匯入測試以確保函式庫已正確連結和設定。

# !! Run inside the Conda environment !!

python -c "import torch; import fbgemm_gpu; print(torch.ops.fbgemm.merge_pooled_embeddings)"

未定義符號

常見的錯誤是無法在 Python 中匯入 FBGEMM_GPU,其錯誤簽名如下

Traceback (most recent call last):
  File "/root/miniconda/envs/mycondaenv/lib/python3.10/site-packages/torch/_ops.py", line 565, in __getattr__
    op, overload_names = torch._C._jit_get_operation(qualified_op_name)
RuntimeError: No such operator fbgemm::jagged_2d_to_dense
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/root/miniconda/envs/mycondaenv/lib/python3.10/site-packages/fbgemm_gpu-0.4.1.post47-py3.10-linux-aarch64.egg/fbgemm_gpu/__init__.py", line 21, in <module>
    from . import _fbgemm_gpu_docs  # noqa: F401, E402
  File "/root/miniconda/envs/mycondaenv/lib/python3.10/site-packages/fbgemm_gpu-0.4.1.post47-py3.10-linux-aarch64.egg/fbgemm_gpu/_fbgemm_gpu_docs.py", line 18, in <module>
    torch.ops.fbgemm.jagged_2d_to_dense,
  File "/root/miniconda/envs/mycondaenv/lib/python3.10/site-packages/torch/_ops.py", line 569, in __getattr__
    raise AttributeError(
AttributeError: '_OpNamespace' 'fbgemm' object has no attribute 'jagged_2d_to_dense'
ERROR conda.cli.main_run:execute(47): `conda run python -c import fbgemm_gpu` failed. (See above for error)
/root/miniconda/envs/mycondaenv/lib/python3.10/site-packages/fbgemm_gpu-0.4.1.post47-py3.10-linux-aarch64.egg/fbgemm_gpu/fbgemm_gpu_py.so: undefined symbol: _ZN6fbgemm48FloatOrHalfToFusedNBitRowwiseQuantizedSBHalfAvx2ItLi2EEEvPKT_miPh

一般而言,FBGEMM_GPU 安裝中出現未定義符號的原因如下

  1. FBGEMM_GPU 依賴的執行階段函式庫,例如 libnvidia-ml.solibtorch.so,未正確安裝或在 LD_LIBRARY_PATH 中不可見。

  2. FBGEMM_GPU 套件建置不正確,且包含未連結的宣告(例如,請參閱 PR 1618)。

在前一種情況下,可以透過重新安裝相關套件和/或手動更新 LD_LIBRARY_PATH 來解決此問題。

在後一種情況下,這是嚴重的建置和/或封裝問題,應向 FBGEMM 開發人員報告。

文件

存取 PyTorch 的全面開發者文件

查看文件

教學

取得初學者和進階開發者的深入教學

查看教學

資源

尋找開發資源並獲得問題解答

查看資源