本地部署大模型

2,086 阅读5分钟

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

使用

  1. 启动 Ollama: 打开终端或命令行,输入 ollama serve 命令启动 Ollama 服务器。
  2. 下载模型: 在模型仓库  找到想要的模型,然后使用 ollama pull 命令下载,例如 ollama pull deepseek-coder-v2:16b 。
  3. 运行模型: 使用 ollama run 命令启动模型,例如 ollama run deepseek-coder-v2:16b 。
  4. 开始聊天: 在终端中输入你的问题或指令,Ollama 会根据模型生成相应的回复

image.png