[IntelArc][GPT翻譯] 如何在 Windows 和 Windows Subsystem for Linux (WSL2) 上使用 Intel® Arc™ A 系列 GPU (A770 or A750) 運行 Llama 2 LLM模型
前言
在生成模型中,大型語言模型 (LLMs) 在將深度學習推向文本生成的新高度方面起著重要作用。
LLMs 可以具有數十億到數萬億個參數,訓練於大量的文本數據集上,顯示出顯著的能力。
LLMs 通常具有基於transformer的架構,包含多個解碼器層,這些層根據前面的token 生成下一個token 。由於迭代解碼,生成任務是內存受限的。
流行的 LLMs 包括 GPT-J、LLaMA、OPT 和 BLOOM。
Llama 2 是一組經過預訓練和微調的 Llama 語言模型,參數範圍從 70 億到 700 億。
LLMs 的這些特性使得 GPU 非常適合 LLM 工作負載,因為 GPU 擅長於大規模數據並行處理和高內存帶寬。
Intel Arc A 系列圖形,包括 Intel® Arc™ A770 圖形,是高性能圖形,包含多達 16 GB GPU 內存和 32 個 Xe 核心。
每個 Xe 核心配備有 16 個 Intel® Xe 矩陣擴展 (Intel® XMX) 引擎,總計多達 512 個 Intel XMX 引擎,用於優化深度學習推理和訓練中的數百萬次重複 GEMM(通用矩陣乘法)操作。
Intel Arc A 系列圖形提供加速深度學習模型執行的能力,包括 LLMs。
Intel® Extension for PyTorch* 通過最新的性能優化擴展了 PyTorch,使其適用於 Intel 硬件,利用 Intel 離散 GPU 上的 Intel XMX 引擎。
Intel Extension for PyTorch 啟用了 PyTorch XPU 設備,使用戶能夠輕鬆地將 PyTorch 模型和輸入數據移動到設備上,在 Intel 離散 GPU 上運行以實現 GPU 加速。
最新發布的 Intel Extension for PyTorch (v2.1.10+xpu) 正式支持在 WSL2、內置 Windows 和本地 Linux 上的 Intel Arc A 系列圖形。
用戶可以通過 Intel Extension for PyTorch 在 Intel Arc A 系列圖形上運行 PyTorch 模型。
在本文中,我們展示了如何通過 Intel Extension for PyTorch 在 Intel Arc A 系列 GPU 上運行 Llama 2 模型。
我們在 Windows 和 WSL2 上使用 Intel Arc A770 GPU 展示了 Llama 2 7B 和 Llama 2-Chat 7B 模型。
設置
先決條件
注意:WSL2 為用戶提供了 Windows 系統內的 Linux 環境。如果您希望使用 WSL2,請按照安裝和設置說明進行操作。
系統要求
確保您的系統符合以下系統要求。 有關詳細信息,請參閱安裝指南。
硬件
安裝後,您可以在設備管理器 > 顯示適配器下驗證您的 Intel Arc A 系列 GPU 是否已列出。
0.軟件
安裝 Intel® oneAPI Base Toolkit。
1.設置 conda 虛擬環境
conda create -n llm python=3.9 -yconda activate llm
安裝依賴項(僅適用於 Windows)
conda install pkg-config libuvpython -m pip install accelerate sentencepiece
安裝 PyTorch 和 Intel Extension for PyTorch
python -m pip install torch==2.1.0a0 intel-extension-for-pytorch==2.1.10+xpu --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/us/
安裝 Transformers
python -m pip install transformers==4.31.0
驗證
Windows
WSL2
source {ONEAPI_PATH}/setvars.sh
運行以下命令以驗證 PyTorch 和 Intel Extension for PyTorch 的安裝,以及 Intel Arc A 系列 GPU 驅動程序的檢測。
=>站長補充,由於intel_extension_for_pytorch as ipex報錯關係,需要多安裝setuptools
pip install "setuptools<70"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())];"
以上命令的示例輸出如下:
(選用)安裝 Jupyter Notebook
pip install jupyter
2.使用 PyTorch 在 Intel Arc A 系列 GPU 上運行 Llama 2 推理
我們現在準備在 Windows 和 WSL2 上使用 Intel Arc A 系列 GPU 運行 Llama 2 推理。
確保之前已激活 Intel oneAPI Base Toolkit 環境。
Llama 2 7B FP16 推理
讓我們在以下示例中運行 meta-llama/Llama-2-7b-hf 推理,使用 FP16 數據類型。讓我們生成一些關於薛定諤貓的創意文本!
注意:本博客中使用了運行在 Intel® Core® i5 9400 處理器上的 Intel Arc A750 圖形(8 GB)。使用半精度 (FP16) 的 Llama 2 7B 推理需要 8 GB 的 GPU 內存(吃滿)。
注意:Hugging Face 上的 meta-llama 需要訪問請求和批准。
=>站長補充,如果要避免Hugging Face 授權問題,可以參考此篇文章,將整個模型手動下載到本地端,並放在Jupyter 的子路徑當中
更改程式碼
model_id = "./Llama-2-7b-chat-hf"
import torch
from transformers import AutoModelForCausalLM, LlamaTokenizer
############# 代碼更改 ###############
# import ipex
import intel_extension_for_pytorch as ipex
# 驗證 Intel Arc GPU
print(ipex.xpu.get_device_name(0))
##########################################
# 加載模型
model_id = "meta-llama/Llama-2-7b-hf"
dtype = torch.float16
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=dtype, low_cpu_mem_usage=True)
tokenizer = LlamaTokenizer.from_pretrained(model_id)
############# 代碼更改 ###############
# 移動到 Intel Arc GPU
model = model.eval().to("xpu")
##########################################
# 生成
with torch.inference_mode(), torch.no_grad(), torch.autocast(
############# 代碼更改 ###############
device_type="xpu",
##########################################
enabled=True,
dtype=dtype
):
text = "You may have heard of Schrodinger cat mentioned in a thought experiment in quantum physics. Briefly, according to the Copenhagen interpretation of quantum mechanics, the cat in a sealed box is simultaneously alive and dead until we open the box and observe the cat. The macrostate of cat (either alive or dead) is determined at the moment we observe the cat."
input_ids = tokenizer(text, return_tensors="pt").input_ids
############# 代碼更改 ###############
# 移動到 Intel Arc GPU
input_ids = input_ids.to("xpu")
##########################################
generated_ids = model.generate(input_ids, max_new_tokens=128)[0]
generated_text = tokenizer.decode(generated_ids, skip_special_tokens=True)
print(generated_text)
總結
在這篇博客中,我們展示了如何通過 Intel Extension for PyTorch 在 Intel Arc A 系列圖形上運行 Llama 2 推理。以下是關鍵要點:
- GPU 非常適合 LLM 工作負載,因為 GPU 擅長於大規模數據並行處理和高內存帶寬。包括 Intel Arc A770 圖形在內的 Intel Arc A 系列圖形,是高性能圖形,具有多達 512 個 Intel XMX 引擎,提供加速執行深度學習模型的能力,包括 LLMs。
- Intel Extension for PyTorch 通過最新的性能優化擴展了 PyTorch,使其適用於 Intel 硬件,利用 Intel 離散 GPU 上的 Intel XMX 引擎。
- Intel Extension for PyTorch 啟用了 PyTorch XPU 設備,使其更容易將 PyTorch 模型和輸入數據移動到設備上,在離散 GPU 上運行以實現 GPU 加速。
- 最新發布的 Intel Extension for PyTorch (v2.1.10+xpu) 正式支持在 WSL2、內置 Windows 和內置 Linux 上的 Intel Arc A 系列圖形。
- 展示了在 Windows 和 WSL2 上通過 Intel Extension for PyTorch 在 Intel Arc A770 圖形上運行 Llama 2 7B 和 Llama 2-Chat 7B 推理。
- 要在 Intel Arc A 系列 GPU 上運行 Llama 2 或任何其他 PyTorch 模型,只需添加幾行額外的代碼以導入 intel_extension_for_pytorch 並使用 .to("xpu") 將模型和數據移動到設備上,在 Intel Arc A 系列 GPU 上運行。
- 您也可以類似地在 Intel 離散 GPU 上運行其他 LLM 或任何其他 PyTorch 模型。在未來的帖子中,我們將展示如何在 Intel Arc A 系列 GPU 上優化 LLM 性能。
下一步
獲取軟件
試試在 Intel Arc A 系列 GPU 上通過 Intel Extension for PyTorch 運行 Llama 2 推理,在 Windows 和 WSL2 上運行。
查看並將 Intel 的其他 AI 和機器學習框架優化及端到端工具組合納入您的 AI 工作流程。
了解統一的、基於開放標準的 oneAPI 編程模型,這是 Intel AI 軟件組合的基礎,幫助您準備、構建、部署和擴展您的 AI 解決方案。
推薦資源
- Intel Extension for PyTorch on GitHub Repository
- Intel Extension for PyTorch for Python Package Index* (PyPI)
- Intel Extension for PyTorch Documentation
- Intel Arc A-Series Graphics
- Introduction to the Xe HPG Microarchitecture
- GPU inference by Hugging Face
參考資料
- Llama 2: Open Foundation and Fine-Tuned Chat Models
- Methods and Tools for Efficient Training on a Single GPU
留言
張貼留言
歡迎留下您的心靈足跡👍