LLM 模型部署
Xinference
安装 — Xinference
Xinference 在 Linux, Windows, MacOS 上都可以通过 pip 来安装。如果需要使用 Xinference 进行模型推理,可以根据不同的模型指定不同的引擎。
安装
如果你希望能够推理所有支持的模型,可以用以下命令安装所有需要的依赖:
pip install "xinference[all]"
在安装所有引擎时,遇到错误,暂时未解决
Could not build wheels for chatglm-cpp, which is required to install pyproject.toml-based projects
Transformers 引擎 PyTorch(transformers) 引擎支持几乎有所的最新模型,这是 Pytorch 模型默认使用的引擎,安装没有遇到报错
pip install "xinference[transformers]"
vLLM 引擎 vLLM 是一个支持高并发的高性能大模型推理引擎。当满足以下条件时,Xinference 会自动选择 vllm 作为引擎来达到更高的吞吐量:
安装 xinference 和 vLLM:
pip install "xinference[vllm]"
# FlashInfer is optional but required for specific functionalities such as sliding window attention with Gemma 2.
# For CUDA 12.4 & torch 2.4 to support sliding window attention for gemma 2 and llama 3.1 style rope
pip install flashinfer -i https://flashinfer.ai/whl/cu124/torch2.4
# For other CUDA & torch versions, please check https://docs.flashinfer.ai/installation.html
Llama.cpp 引擎
Xinference 通过 llama-cpp-python 支持 gguf 格式的模型。建议根据当前使用的硬件手动安装依赖,从而获得最佳的加速效果。
pip install xinference
不同硬件的安装方式:
- Apple M系列 CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
- 英伟达显卡: CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
- AMD 显卡: CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
MLX 引擎 MLX-lm 用来在苹果 silicon 芯片上提供高效的 LLM 推理。
pip install "xinference[mlx]"
模型下载源的设置
Xinference 模型下载缺省是从Huggingface官方网站下载 huggingface.co/models 。在国内因为网络原因,可以通过下面的环境变量设计为其它镜像网站:
HF_ENDPOINT=hf-mirror.com.
或者直接设置为:ModelScope:
通过环境变量" XINFERENCE_MODEL_SRC"设置。
XINFERENCE_MODEL_SRC=modelscope.
另外,可以通过环境变量XINFERENCE_HOME设置运行时缓存文件主目录。 模型默认缓存目录 C:\Users\leoli.cache\modelscope\hub\modelscope
export HF_ENDPOINT=https://hf-mirror.com
export XINFERENCE_MODEL_SRC=modelscope
export XINFERENCE_HOME=/jppeng/app/xinference
可以设置环境变量,临时启作用,或者设置在用户环境变量中,登陆即自动生效。
Hugging Face 的 Transformers 库
Hugging Face 的 Transformers 库学习总结 - 掘金 (juejin.cn)
模型加载使用 Hugging Face 提供的 Transoformers 库。
- AutoConfig
- AutoModel
- AutoTokenize
ChatGLM 模型
self.tokenizer = AutoTokenizer.from_pretrained(self.model_path, trust_remote_code = True)
self.model = AutoModel.from_pretrained(self.model_path, trust_remote_code = True).quantize(8).half().cuda().eval()
Qwen 模型
self.tokenizer = AutoTokenizer.from_pretrained(self.model_path, trust_remote_code=True)
self.model = AutoModelForCausalLM.from_pretrained(self.model_path, device_map="auto", trust_remote_code=True).eval()
# Specify hyperparameters for generation
self.model.generation_config = GenerationConfig.from_pretrained(self.model_path, trust_remote_code=True) # 可指定不同的生成长度、top_p等相关超参
依赖安装
pip install transformers_stream_generator einops flash_attn
Ollama
Ollama 是一个用于构建大型语言模型应用的工具,它提供了一个简洁易用的命令行界面和服务器,让你能够轻松下载、运行和管理各种开源 LLM。与需要复杂配置和强大硬件的传统 LLM 不同,Ollama 让你能够方便地像使用手机 App 一样体验 LLM 的强大功能。
安装
使用 Ollama 非常简单,只需要按照以下步骤: 安装 Ollama: 根据你的操作系统,从 Ollama 官网 下载并安装最新版本。
macOS
下载安装程序 ollama.com/download/Ol…
模型文件存放路径:~/.ollama/models
Windows
下载安装程序 ollama.com/download/Ol… ,双击进行安装。默认安装在 C 盘,不支持选择。 同样默认模型文件下载存放在 C:\Users%username%.ollama\models。
安装完成之后,有几个常用的系统环境变量参数建议进行设置:
- OLLAMA_MODELS:模型文件存放目录,默认目录为当前用户目录(Windows 目录:
C:\Users%username%.ollama\models,MacOS 目录:~/.ollama/models,Linux 目录:/usr/share/ollama/.ollama/models),如果是 Windows 系统建议修改(如:D:\OllamaModels),避免 C 盘空间吃紧 - OLLAMA_HOST:Ollama 服务监听的网络地址,默认为127.0.0.1,如果允许其他电脑访问 Ollama(如:局域网中的其他电脑),建议设置成0.0.0.0,从而允许其他网络访问
- OLLAMA_PORT:Ollama 服务监听的默认端口,默认为11434,如果端口有冲突,可以修改设置成其他端口(如:8080等)
- OLLAMA_ORIGINS:HTTP 客户端请求来源,半角逗号分隔列表,若本地使用无严格要求,可以设置成星号,代表不受限制
- OLLAMA_KEEP_ALIVE:大模型加载到内存中后的存活时间,默认为5m即 5 分钟(如:纯数字如 300 代表 300 秒,0 代表处理请求响应后立即卸载模型,任何负数则表示一直存活);我们可设置成24h,即模型在内存中保持 24 小时,提高访问速度
- OLLAMA_NUM_PARALLEL:请求处理并发数量,默认为1,即单并发串行处理请求,可根据实际情况进行调整
- OLLAMA_MAX_QUEUE:请求队列长度,默认值为512,可以根据情况设置,超过队列长度请求被抛弃
- OLLAMA_DEBUG:输出 Debug 日志标识,应用研发阶段可以设置成1,即输出详细日志信息,便于排查问题
- OLLAMA_MAX_LOADED_MODELS:最多同时加载到内存中模型的数量,默认为1,即只能有 1 个模型在内存中
Linux
程序安装在终端执行下面命令
curl -fsSL https://ollama.com/install.sh | sh
模型文件存放路径: /usr/share/ollama/.ollama/models
使用
- 启动 Ollama: 打开终端或命令行,输入
ollama serve命令启动 Ollama 服务器。 - 下载模型: 在模型仓库 找到想要的模型,然后使用
ollama pull命令下载,例如ollama pull deepseek-coder-v2:16b。 - 运行模型: 使用
ollama run命令启动模型,例如ollama run deepseek-coder-v2:16b。 - 开始聊天: 在终端中输入你的问题或指令,Ollama 会根据模型生成相应的回复