安裝說明¶
注意: 最新的安裝說明已嵌入 FBGEMM 儲存庫中 setup_env.bash 內建的一組腳本中。
安裝 FBGEMM_GPU 的一般步驟如下
設定隔離的建置環境。
為僅限 CPU、CUDA 或 ROCm 執行階段設定工具鏈。
安裝 PyTorch。
安裝 FBGEMM_GPU 套件。
執行安裝後檢查。
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 顯示驅動程式必須在所有其他環境設定之前安裝在系統上。NVIDIA 和 PyTorch 提供的步驟是執行此操作最權威的說明。可以使用 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 安裝中出現未定義符號的原因如下
FBGEMM_GPU 依賴的執行階段函式庫,例如
libnvidia-ml.so
或libtorch.so
,未正確安裝或在LD_LIBRARY_PATH
中不可見。FBGEMM_GPU 套件建置不正確,且包含未連結的宣告(例如,請參閱 PR 1618)。
在前一種情況下,可以透過重新安裝相關套件和/或手動更新 LD_LIBRARY_PATH
來解決此問題。
在後一種情況下,這是嚴重的建置和/或封裝問題,應向 FBGEMM 開發人員報告。