如何在 NVIDIA H100 上运行 Snowflake Arctic 模型推理?配置步骤详解
发布时间: 2024-08-14 15:02

Snowflake 最近发布了 Arctic,这是他们的 混合专家 (MoE) 模型,可以处理 128 个 token,拥有大约 4790 亿个参数,这使其成为执行大规模任务的高效模型。Arctic 旨在为各种应用程序和用例提供卓越的性能,包括 SQL 数据副驾驶和预测分析。


Arctic 的突出特点之一是它能够跨多种硬件配置高效扩展,因此特别适合部署在高性能机器上,例如配备 8xH100 GPU 的 NVIDIA Cluster/Server。Arctic 的推理功能可与 Hugging Face、NVIDIA TensorRT 以及 vLLM 配合使用。通过采用 FP8 量化将浮点数的精度降低为 8 位格式,该模型可以在单个 GPU 实例上运行。虽然此设置尚未完全优化,但它可以在批处理大小为 1 的情况下实现超过每秒 70 个令牌的吞吐量。


准备好亲自体验Hugging Face 的 Snowflake-Arctic-instruct 模型了吗?在本博客中,我们将引导您完成捷智算平台的 8xH100裸机服务器上的环境设置、模型加载和推理执行。以下是在捷智算平台上进行配置的步骤 。


一、配置


如果您尚未注册捷智算平台, 请先注册。以下是我们将在本教程中使用的配置:


机器:8 xH100 裸机服务器

操作系统:Ubuntu 22.04 LTS

已安装的软件包:Nvidia-Cuda 12.1-toolkit、Python 3.10.*、Pytorch for Cuda 12.1

首先,使用以下命令检查实例上 GPU 的详细信息和 CUDA 版本:




请注意,在上面的屏幕截图中,用于此测试的机器之前运行的是 Cuda 12.4,它遇到了 Cuda 可用的PyTorch版本的问题。 


我们建议在 H100 GPU 上使用带有 535 NVIDIA 驱动程序的 Cuda 12.1。要将 Cuda 版本降级到 12.1,首先需要删除现有的 12.4 版 Cuda。


sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*"

"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" 


sudo apt-get autoremove # To clean up the uninstall


清除后,重新安装所需的nvidia-toolkit 。只需按照Ubuntu 22.04 的Nvidia-Cuda 12.1-toolkit说明进行操作即可。接下来,重新启动计算机并运行nvidia-smi :它应该确认您的 Cuda 版本为 12.1。



二、安装机器学习框架 Pytorch


我们需要安装 Pytorch 库来检查 GPU 兼容性。 


运行以下命令;

pip install torch torchvision torchaudio # Install Pytorch


要检查它与您的 H100 GPU 的兼容性,可以使用以下方法:

>>> import torch

>>> use_cuda = torch.cuda.is_available()


此命令将返回一个布尔值(True/False),让您知道 GPU 是否可用。如果为 false,则表示您的实例需要安装 Nvidia 的 Fabric Manager。这是 8 路 A100 和 H100 系统所必需的。 


Nvidia 的 Fabric Manager 是什么?


NVIDIA 的 Fabric Manager 是 NVIDIA 数据中心 GPU 管理生态系统的一部分,专门用于管理和优化服务器内或服务器网络中 GPU 之间的连接和通信。该软件在使用多个 GPU 处理复杂计算的大规模环境中起着至关重要的作用,例如在高性能计算 (HPC)、深度学习和其他数据密集型应用程序中。了解有关Nvidia 的 Fabric 管理器的更多信息。


在安装 Fabric Manager 之前,需要先安装 Nvidia 的数据中心 GPU 管理器 (DCGM) 库。阅读有关Nvidia 的 DCGM的更多信息。以下是在 Linux 机器上安装 DCGM 的命令。


wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb

sudo dpkg -i cuda-keyring_1.0-1_all.deb

sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"

$ sudo apt-get update && sudo apt-get install -y datacenter-gpu-manager # Install dcgm


以下是安装 Fabric Manager 的步骤,安装 Fabric Manager 后,重新启动系统,运行以下命令启动 NVIDIA Fabric Manager 服务:

sudo apt-get install -y cuda-drivers-fabricmanager-535


sudo systemctl --now enable nvidia-dcgm

dcgmi discovery -l


为了验证安装,我们使用 dcgmi 来查询系统。您应该看到系统中所有受支持的 GPU(以及任何 NVSwitches)的列表,请参阅以下屏幕截图:




现在运行剩余的命令来启动结构管理器服务:

sudo systemctl start nvidia-fabricmanager

sudo systemctl status nvidia-fabricmanager


以下是正在运行的 Fabric Manager 服务的屏幕截图:




让我们快速测试 Pytorch 与我们的 GPU 的兼容性。


>> import torch

>>> use_cuda = torch.cuda.is_available()

>>> print(use_cuda)


上述命令现在应该返回 TRUE。


三、虚拟环境和库


现在,让我们启动一个具有 root 访问权限的虚拟环境,以使用 Snowflake 的 Arctic 模型设置推理。


使用以下命令安装并激活虚拟环境:


# Create virtual environment

sudo apt install python3-venv

python3 -m venv <virtual-env-name>

source <v-env-name>/bin/activate #activates your virtual env.


请参阅Snowflake-arctic 在 Github 上的官方 repo来安装所需的库以及一些其他库:


pip install deepspeed>=0.14.2

pip install transformers>=4.39.0

pip install huggingface_hub[hf_transfer]


pip install accelerate

pip install SentencePiece

pip install protobuf

pip install -U transformers # Upgrades transformers


通过安装 Hugging Face CLI传递 Hugging Face READ令牌:

pip install huggingface-cli

huggingface-cli login


CLI 设置完成后,安装 flash-attn 库。


什么是 Flash Attention?


Transformer 架构的扩展主要受限于自注意力机制,这需要大量的时间和内存。硬件方面的最新改进提高了计算能力,但对内存或数据传输却没有多大帮助。这往往会导致注意力操作期间内存出现瓶颈。Flash Attention是一种旨在解决此问题的算法,它使扩展 Transformer 以加快训练和推理速度变得更加容易。


pip install wheel

pip install flash-attn --no-build-isolation


如果上述命令没有安装flash-attn ,则克隆flash-attn repo 并按照README 文件中的步骤操作。


四、创建可执行文件


接下来,创建一个 Python 可执行文件来加载并运行 Arctic-Instruct 模型arctic-test.py。


import os

# enable hf_transfer for faster ckpt download

os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"

os.environ['HF_HOME'] = '/dev/shm'#Change the default root directory


import torch

from transformers import AutoModelForCausalLM, AutoTokenizer

from deepspeed.linear.config import QuantizationConfig


tokenizer = AutoTokenizer.from_pretrained(

    "Snowflake/snowflake-arctic-instruct",

    trust_remote_code=True

)


quant_config = QuantizationConfig(q_bits=8)


# The 150GiB number is a workaround until we have HFQuantizer support, must be ~1.9x of the available GPU memory

model = AutoModelForCausalLM.from_pretrained(

    "Snowflake/snowflake-arctic-instruct",

    low_cpu_mem_usage=True,

    trust_remote_code=True,

    device_map="auto",

    ds_quantization_config=quant_config,

    max_memory={i: "150GiB" for i in range(8)},

    torch_dtype=torch.bfloat16)


messages = [{"role": "user", "content": "What is 1 + 1 "}]

input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to("cuda")


outputs = model.generate(input_ids=input_ids, max_new_tokens=20)

print(tokenizer.decode(outputs[0]))


请注意,由于模型很大(大约空间~1000G),我们在 Python 脚本中通过使用 os.environ 映射对象提供了路径,代表环境变量。请参阅第 4 行: 


os.environ[ 'HF_HOME' ] = '/dev/shm'


否则,默认下载将转到/root/.cache 。


通过运行df -h命令,我们可以选择模型权重的下载路径。否则,如果您没有指定正确的路径,可能会遇到磁盘空间问题。




五、故障排除


如果在执行上述 Python 文件时遇到此错误:

ImportError: cannot import name 'LlamaTokenizer' from 'transformers.models.llama'


然后,对tokenization_arctic.py进行更改:

nano /dev/shm/huggingface/modules/transformers_modules/Snowflake/snowflake-arctic-instruct/314d82d80be3cf48aedfe33c82513c030a1238d7/tokenization_arctic.py


并将标记化文件 tokenization_arctic.py 从:

transformers.models.llama import LlamaTokenizer 


from transformers import LlamaTokenizer


使其看起来像这样:




现在,当您执行 Python 脚本时,我们可以看到正在下载模型权重。请注意,下载可能需要最多 20 分钟才能完成。


python3 arctic-test.py




一旦模型下载完毕,fp_quantizer 就会加载到环境中,几秒钟内我们就会看到我们的模型正在运行推理。




模型推理的输出:

<|im_start|> user

What is 1 + 1 <|im_end|>

<|im_start|>assistant

 1 + 1 equals 2.<|im_end|>


如果您看到警告 — 注意掩码和 pad token id 未设置。因此,您可能会观察到意外行为。请传递输入的“attention_mask”以获得可靠的结果。可以通过在generation_config中设置pad_token_id来解决。对于在Hugging Face上完成的任何文本生成任务,此警告很常见。这里有一个解释。


就是这样,您现在正在捷智算平台的 8 x H100裸机服务器上对 Snowflake-Arctic-instruct 模型进行推理。


为您的 AI 驱动业务释放 Snowflake Arctic 的强大力量。立即开始在捷智算平台上部署 Arctic !

粤公网安备 44030502006483号、 粤ICP备15047669号
  • 捷易科技联系人