LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

       FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为:https://chat.lmsys.org/,该体验平台主要是为了收集人类的真实反馈,目前已经支持30多种大模型,已经收到500万的请求,收集了10万调人类对比大模型的数据,可以在排行榜(https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard)进行查看。

FastChat核心特性包括:

  • 提供了SOTA模型(比如Vicuna,FastChat-T5)的模型权重,训练代码,评估代码;
  • 分布式多模型部署系统,自带Web UI和OpenAI兼容的RESTful APIs。

一、FastChat安装

方法一:pip安装

pip3 install "fschat[model_worker,webui]"

方法二:源码安装

Step1 克隆源码并切换到对应的目录下

git clone https://github.com/lm-sys/FastChat.gitcd FastChat

如果是mac,还需要执行如下代码

brew install rust cmake

Step2 安装相关的包​​​​​​​

pip3 install --upgrade pip  # enable PEP 660 supportpip3 install -e ".[model_worker,webui]"

二、FastChat聊天应用

下面展示一下不同模型以及不同大小启用聊天功能

Vicuna模型

模型大小聊天命令Hugging Face 
7Bpython3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5lmsys/vicuna-7b-v1.5
7B-16kpython3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5-16klmsys/vicuna-7b-v1.5-16k
13Bpython3 -m fastchat.serve.cli --model-path lmsys/vicuna-13b-v1.5lmsys/vicuna-13b-v1.5
13B-16kpython3 -m fastchat.serve.cli --model-path lmsys/vicuna-13b-v1.5-16klmsys/vicuna-13b-v1.5-16k
33Bpython3 -m fastchat.serve.cli --model-path lmsys/vicuna-33b-v1.3lmsys/vicuna-33b-v1.3

PS:对于16k模型,需要transformers>=4.31。

LongChat

模型大小聊天命令Hugging Face
7Bpython3 -m fastchat.serve.cli --model-path lmsys/longchat-7b-32k-v1.5lmsys/longchat-7b-32k

FastChat-T5

模型大小聊天命令Hugging Face
3Bpython3 -m fastchat.serve.cli --model-path lmsys/fastchat-t5-3b-v1.0lmsys/fastchat-t5-3b-v1.0

三、FastChat使用命令行进行推理

图片

PS:可以使用 --style rich 来启用富文本输出,提高某些非 ASCII 内容的文本流传输质量。在某些终端上可能无法正常工作。

支持的模型

      支持的模型有LLama 2, Vicuna, Alpaca, Baize, ChatGLM, Dolly, Falcon, FastChat-T5, GPT4ALL, Guanaco, MTP, OpenAssistant, OpenChat, RedPajama, StableLM, WizardLM等。查看支持的全部模型和如何添加新模型可以参考:https://github.com/lm-sys/FastChat/blob/main/docs/model_support.md

单GPU

       在单GPU下,执行如下命令:

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5

      对于Vicuna-7B 模型大概需要14G显存,对于Vicuna-13B模型大概需要28G显存,如果显存不够,可以参考:https://github.com/lm-sys/FastChat#not-enough-memory

多GPU

       支持多GPU并行推理,命令如下:

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --num-gpus 2

       有时候”auto“策略在huggingface/transformers不能在多GPU间平衡,因此最好增加参数”--max-gpu-memory“,该参数可以指定每个gpu用于存储模型权重的最大内存。这允许它为激活分配更多的内存,因此可以使用更长的上下文长度或更大的批处理大小。最好的命令是:

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --num-gpus 2 --max-gpu-memory 8GiB

仅CPU

      在单CPU下,执行如下命令:

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --device cpu

      对于Vicuna-7B 模型大概需要30G内存,对于Vicuna-13B模型大概需要60G内存。

        如果使用AVX512_BF16/AMX加速CPU推理,命令如下:

CPU_ISA=amx python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --device cpu

Metal Backend (带苹果Silicon 或AMD GPU的Mac电脑)

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --device mps --load-8bit

       参数”--device mps“在torch>2.0情况下,可以加速mac GPU运算;参数”--load-8bit“可以量化为int8。Vicuna-7B在32GB内存的M1 Mac电脑 上推理时,每秒会生成1 - 2个词。

Intel XPU(Intel Data Center和Arc A-Series GPU)

    安装Intel Extension for PyTorch(https://intel.github.io/intel-extension-for-pytorch/xpu/latest/tutorials/installation.html)。设置OneAPI环境变量:

source /opt/intel/oneapi/setvars.sh

使用 --device xpu 启用XPU/GPU加速。

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.3 --device xpu

Vicuna-7B 可以在Intel Arc A770 16GB上运行。

显存不足

       对于显存不够的情况,可以参考量化或者offload策略来部分解决,比如在命令行加入参数”--load-8bit“或者”--cpu-offloading“

python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5 --load-8bit

四、FastChat使用WEB GUI进行推理

图片

       使用web UI提供服务,需要三个主要组件:与用户接口的web服务器、托管一个或多个模型的模型worker,以及协调web服务器和模型worker的controller。更多信息可以参考:https://github.com/lm-sys/FastChat/blob/main/docs/server_arch.md

启动controller

python3 -m fastchat.serve.controller

启动模型worker

python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.5

       启动成功后,会看到"Uvicorn running on ...",也可以通过如下命令来测试模型worker是否正确连接controller

python3 -m fastchat.serve.test_message --model-name vicuna-7b-v1.5

启动Gradio Web服务器

python3 -m fastchat.serve.gradio_web_server

五、FastChat模型评估

      FastChat使用多轮开放式问题来评估模型。为了实现评估过程的自动化,建议采用像GPT-4这样的强大LLM评估模型的回复(https://github.com/lm-sys/FastChat/blob/main/fastchat/llm_judge)。

具体步骤如下

  1. 从不同的模型生成回答:使用 qa_baseline_gpt35.py 获取ChatGPT的回答,或者指定模型检查点并运行 get_model_answer.py 获取 Vicuna 和其他模型的回答;

  2. 使用 GPT-4 生成评论:使用 GPT-4 自动生成评论。如果您无法使用 GPT-4 API,则可以手动执行此步骤;

  3. 生成可视化数据:运行 generate_webpage_data_from_table.py 生成静态网站的数据,以便您可以可视化评估数据;

  4. 可视化数据:在 webpage 目录下提供一个静态网站。您可以使用 python3 -m http.server 在本地提供网站服务。

数据格式和贡献

      采用JSON Lines 编码的数据格式进行评估,该格式包括有关模型、提示、评论者、问题、回答和评论的信息。

六、FastChat模型微调

6.1 数据

       Vicuna 是通过使用从 ShareGPT.com 上收集的约 7 万个用户共享对话使用 LLaMA 基础模型进行微调而创建的,使用了公共的 API。为了确保数据质量,将 HTML 转换回 Markdown,并过滤掉一些不适当或低质量的样本。此外,将较长的对话分割成适合模型最大上下文长度的较小段落(https://github.com/lm-sys/FastChat/blob/main/docs/commands/data_cleaning.md)。

      目前可能不会发布 ShareGPT 数据集,如果想尝试微调代码,可以使用 dummy_conversation.json(https://github.com/lm-sys/FastChat/blob/main/data/dummy_conversation.json)中的一些虚拟对话来运行它,可以按照相同的格式插入自己的数据。

6.2 代码和超参数

HyperparameterGlobal Batch SizeLearning rateEpochsMax lengthWeight decay
Vicuna-13B1282e-5320480

6.3 使用本地GPU微调Vicuna-7B模型

pip3 install -e ".[train]"

使用以下命令使用 4 个 A100 (40GB) 对 Vicuna-7B 进行训练​​​​​​​

torchrun --nproc_per_node=4 --master_port=20001 fastchat/train/train_mem.py \    --model_name_or_path meta-llama/Llama-2-7b-hf \    --data_path data/dummy_conversation.json \    --bf16 True \    --output_dir output_vicuna \    --num_train_epochs 3 \    --per_device_train_batch_size 2 \    --per_device_eval_batch_size 2 \    --gradient_accumulation_steps 16 \    --evaluation_strategy "no" \    --save_strategy "steps" \    --save_steps 1200 \    --save_total_limit 10 \    --learning_rate 2e-5 \    --weight_decay 0. \    --warmup_ratio 0.03 \    --lr_scheduler_type "cosine" \    --logging_steps 1 \    --fsdp "full_shard auto_wrap" \    --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \    --tf32 True \    --model_max_length 2048 \    --gradient_checkpointing True \    --lazy_preprocess True

参考文献:

[1] https://github.com/lm-sys/FastChat

[2] https://github.com/lm-sys/FastChat/blob/main/docs/openai_api.md

[3] https://github.com/lm-sys/FastChat/blob/main/fastchat/serve/huggingface_api.py

[4] https://github.com/lm-sys/FastChat/blob/main/docs/langchain_integration.md

<think>好的,用户想了解类似于Ollama的同类框架。首先,我需要确认Ollama是什么。根据之前的知识,Ollama是一个用于本地运行大型语言模型LLM)的开源工具,支持多种模型如Llama 2、Mistral等,提供命令行界面API,方便开发者在本地部署管理模型。接下来,我需要找出与Ollama功能相似的框架,可能包括模型部署、本地运行、API支持等特点。 首先想到的是Llama.cpp,它专注于在CPU上高效运行Llama模型,支持多种量化方法,适合资源有限的环境。然后是Hugging Face的Transformers库,虽然更广泛,但提供了本地运行模型的能力,支持多种框架如PyTorchTensorFlow。Text Generation WebUI可能也是一个候选,它提供了基于Web的界面,方便用户交互。 接着考虑其他可能的框架,比如LM Studio,它提供图形界面,适合非技术用户。GPT4All也是一个选项,专注于本地运行且无需GPU。还有vLLM,虽然主要用于生产环境的高效推理,但可能与Ollama有部分重叠。FastChatLocalAI可能也是相关的,后者兼容OpenAI API,适合需要兼容性的项目。 需要验证这些框架是否确实属于同类,比如检查它们是否支持本地运行、是否开源、是否有API或命令行工具等。同时,用户可能需要比较这些工具的特点,比如性能、易用性、支持的模型等,以便选择最适合的。 还要注意用户可能的深层需求,比如是否关注资源消耗、是否需要图形界面、是否希望与现有系统集成等。因此,在回答中应该分点介绍每个框架,并突出它们的特点适用场景,帮助用户做出决策。确保使用正确的中文术语,结构清晰,信息准确可靠。</think>以下是一些与 **Ollama** 功能类似的框架或工具,它们均支持本地部署运行大型语言模型LLMs),适合开发者研究人员使用: --- ### 1. **Llama.cpp** - **特点**:专为 Meta 的 **Llama** 系列模型优化的 C/C++ 实现,支持 CPU 推理,量化模型以降低资源消耗。 - **适用场景**:资源受限环境(如无 GPU 的机器)、需要轻量级部署。 - **优势**:高效、跨平台、支持多种量化格式(如 GGUF)。 - **项目地址**: [ggerganov/llama.cpp](https://github.com/ggerganov/llama.cpp) --- ### 2. **Hugging Face Transformers** - **特点**:提供广泛的预训练模型库(如 GPT、BERT、T5),支持 PyTorch、TensorFlow 等框架。 - **适用场景**:需要灵活定制模型架构、微调或研究用途。 - **优势**:社区活跃、文档完善、支持本地部署 API 扩展。 - **项目地址**: [huggingface/transformers](https://github.com/huggingface/transformers) --- ### 3. **Text Generation WebUI** - **特点**:基于 Web 的交互界面,支持多种模型后端(包括 Ollama、Llama.cpp 等),提供聊天、模型管理功能。 - **适用场景**:快速测试模型、非开发者友好。 - **优势**:图形化操作、插件扩展(如语音交互、RAG)。 - **项目地址**: [oobabooga/text-generation-webui](https://github.com/oobabooga/text-generation-webui) --- ### 4. **LM Studio** - **特点**:桌面端工具,支持本地运行开源模型(如 Mistral、Llama),提供图形界面模型市场。 - **适用场景**:个人用户、无需代码操作。 - **优势**:易用性高、跨平台(macOS/Windows/Linux)。 - **官网**: [lmstudio.ai](https://lmstudio.ai/) --- ### 5. **GPT4All** - **特点**:专注于本地运行的轻量化工具,提供 Python 绑定 GUI,支持多模态模型。 - **适用场景**:隐私敏感场景、离线使用。 - **优势**:无需 GPU、低资源消耗。 - **项目地址**: [nomic-ai/gpt4all](https://github.com/nomic-ai/gpt4all) --- ### 6. **vLLM** - **特点**:高性能推理框架,支持并行化分布式部署,兼容 Hugging Face 模型。 - **适用场景**:生产环境、高吞吐量需求。 - **优势**:推理速度快、支持连续批处理(Continuous Batching)。 - **项目地址**: [vllm-project/vllm](https://github.com/vllm-project/vllm) --- ### 7. **LocalAI** - **特点**:兼容 OpenAI API 的开源替代品,支持本地部署多种模型(如 Llama、StableLM)。 - **适用场景**:需要与 OpenAI 生态兼容的项目。 - **优势**:API 兼容性强、支持多模态(文本/图像/音频)。 - **项目地址**: [go-skynet/LocalAI](https://github.com/go-skynet/LocalAI) --- ### 8. **FastChat** - **特点**:基于 Vicuna 模型的训练部署工具,支持 Web UI API。 - **适用场景**:构建自定义聊天机器人、学术研究。 - **优势**:支持模型训练评估、多后端兼容。 - **项目地址**: [lm-sys/FastChat](https://github.com/lm-sys/FastChat) --- ### 对比总结 | **框架** | **核心优势** | **适用场景** | |-----------------------|---------------------------|--------------------------| | Ollama | 简单易用、模型管理便捷 | 快速本地测试、开发者工具链 | | Llama.cpp | 极致性能、CPU 优化 | 低资源环境、嵌入式设备 | | Hugging Face | 模型多样性、灵活性高 | 研究与定制化开发 | | Text Generation WebUI | 图形化界面、插件丰富 | 非技术用户、快速原型开发 | | LocalAI | OpenAI API 兼容性 | 企业级替代方案、无缝迁移 | --- 可根据需求选择工具: - **优先易用性** → 尝试 **LM Studio** 或 **Ollama** - **需要 API 兼容性** → 选择 **LocalAI** - **追求高性能推理** → 使用 **vLLM** 或 **Llama.cpp**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wshzd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值