安装 MLC LLM Python 包
MLC LLM Python 包可以直接从预构建的开发包安装,也可以从源代码构建。
选项 1:预构建包
通过 pip 提供 MLC-LLM 的 nightly 预构建包。请选择您的操作系统/计算平台,并在终端中运行以下命令:
备注
❗ 每当使用 Python 时,强烈建议使用 conda 来管理独立的 Python 环境,以避免缺少依赖、版本不兼容和包冲突的问题。请确保您的 conda 环境中已安装 Python 和 pip。
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-cpu mlc-ai-nightly-cpu
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-cu122 mlc-ai-nightly-cu122
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-cu123 mlc-ai-nightly-cu123
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-rocm61 mlc-ai-nightly-rocm61
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-rocm62 mlc-ai-nightly-rocm62
所有 Linux 包均支持。请查看以下说明以安装最新的 Vulkan 加载器,以避免出现 Vulkan 未找到的问题。
conda install -c conda-forge gcc libvulkan-loader
备注
需要在系统中安装 git-lfs,您可以通过以下命令安装:
conda install -c conda-forge git-lfs
如果遇到 GLIBC 未找到的问题,请在 conda 中安装最新版本的 glibc:
conda install -c conda-forge libgcc-ng
此外,建议使用 Python 3.11;因此,如果您正在创建新环境,可以使用以下命令:
conda create --name mlc-prebuilt python=3.11
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-cpu mlc-ai-nightly-cpu
备注
始终使用以下命令检查 macOS 中是否已正确安装 conda:
conda info | grep platform
对于使用 Intel 芯片的 Mac,它应返回 "osx-64",而对于使用 Apple 芯片的 Mac,则应返回 "osx-arm64"。需要在系统中安装 git-lfs,您可以通过以下命令安装:
conda install -c conda-forge git-lfs
conda activate your-environment
python -m pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly-cpu mlc-ai-nightly-cpu
备注
请确保您的 conda 环境中已安装 Python 和 pip。同时,请确保安装以下包:vulkan 加载器、clang、git 和 git-lfs,以启用正确的自动下载和即时编译功能。
conda install -c conda-forge clang libvulkan-loader git-lfs git
如果遇到以下错误:
FileNotFoundError: Could not find module 'path\to\site-packages\tvm\tvm.dll' (or one of its dependencies). Try using the full path with constructor syntax.
这可能是由于缺少 LLVM 的依赖项 zstd。请使用以下命令安装它:
conda install zstd
然后您可以在命令行中验证安装:
python -c "import mlc_llm; print(mlc_llm)"
# Prints out: <module 'mlc_llm' from '/path-to-env/lib/python3.11/site-packages/mlc_llm/__init__.py'>
选项 2:从源代码构建
还提供了从源代码构建 mlc 运行时库 mlc_llm
的选项。当您希望进行修改或获取特定版本的 mlc 运行时,此步骤非常有用。
步骤 1:设置构建依赖项。 要从源代码构建,您需要确保满足以下构建依赖项:
CMake >= 3.24
Git
Rust 和 Cargo,Hugging Face 的分词器需要。
GPU 运行时之一:
CUDA >= 11.8 (NVIDIA GPUs)
Metal (Apple GPUs)
Vulkan (NVIDIA, AMD, Intel GPUs)
# make sure to start with a fresh environment
conda env remove -n mlc-chat-venv
# create the conda environment with build dependency
conda create -n mlc-chat-venv -c conda-forge \
"cmake>=3.24" \
rust \
git \
python=3.11
# enter the build environment
conda activate mlc-chat-venv
备注
对于运行时,TVM Unity 编译器不是 MLCChat CLI 或 Python API 的依赖项。只需要 TVM 的运行时,它已自动包含在 3rdparty/tvm 中。但是,如果您希望编译自己的模型,则需要按照 TVM Unity 进行操作。
步骤 2:配置和构建。 建议使用基于 git 的标准工作流程来下载 MLC LLM,之后您可以使用我们的轻量级配置生成工具指定构建要求:
# clone from GitHub
git clone --recursive https://github.com/mlc-ai/mlc-llm.git && cd mlc-llm/
# create build directory
mkdir -p build && cd build
# generate build configuration
python ../cmake/gen_cmake_config.py
# build mlc_llm libraries
cmake .. && cmake --build . --parallel $(nproc) && cd ..
备注
如果您使用的是 CUDA 且计算能力高于 80,则需要使用 set(USE_FLASHINFER ON)
进行构建。否则,在运行时可能会遇到 Cannot find PackedFunc
问题。
要检查您的 CUDA 计算能力,可以使用 nvidia-smi --query-gpu=compute_cap --format=csv
。
步骤 3:通过 Python 安装。 我们建议您将 mlc_llm
安装为 Python 包,这样您就可以使用 mlc_llm.compile
、mlc_llm.MLCEngine
和 CLI。有两种方法可以做到这一点:
export MLC_LLM_SOURCE_DIR=/path-to-mlc-llm export PYTHONPATH=$MLC_LLM_SOURCE_DIR/python:$PYTHONPATH alias mlc_llm="python -m mlc_llm"conda activate your-own-env which python # make sure python is installed, expected output: path_to_conda/envs/your-own-env/bin/python cd /path-to-mlc-llm/python pip install -e .
步骤 4:验证安装。 您可以使用以下命令验证 MLC 库和 mlc_llm CLI 是否成功编译:
# expected to see `libmlc_llm.so` and `libtvm_runtime.so`
ls -l ./build/
# expected to see help message
mlc_llm chat -h
最后,您可以在命令行中验证安装。您应该会看到用于从源代码构建的路径:
python -c "import mlc_llm; print(mlc_llm)"