新闻详情

新闻详情

首页 / 资讯中心 / 详情

FastChat 集成 xFasterTransformer:在 Intel CPU 上加速大模型推理的完整实践

发布时间:2026/9/6 16:15:50来源:尧图网络
FastChat 集成 xFasterTransformer:在 Intel CPU 上加速大模型推理的完整实践
FastChat 集成 xFasterTransformer在 Intel CPU 上加速大模型推理的完整实践【免费下载链接】FastChatAn open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena.项目地址: https://gitcode.com/GitHub_Trending/fa/FastChat本文围绕 FastChat 仓库中的 xFasterTransformer 集成方案展开如何安装 Intel 的 xFasterTransformer 推理框架、准备模型权重、配置--enable-xft/--xft-max-seq-len/--xft-dtype三个核心参数并在 CLI 与 model worker 两种形态下含 numactl 与 MPI 多路并行策略跑通 CPU 推理。读完本文你将掌握 FastChat 中 xFT 推理链路从参数解析到底层generate_stream_xft流式生成的完整调用链以及多插槽服务器上的 NUMA 调优方法。一、xFasterTransformer 是什么FastChat 为什么集成它xFasterTransformer 是 Intel 推出的针对 CPU 优化的 Transformer 推理框架。FastChat 将其定制集成进来核心目标只有一个在 Intel CPU 上提供更快的推理速度。对于没有 GPU、或希望在 CPU 集群上部署 Vicuna / ChatGLM 等模型的团队这是一条比纯 PyTorch CPU 推理更快的路径。FastChat 中的集成由三块代码构成后文会逐一展开fastchat/modules/xfastertransformer.py定义XftConfig配置数据类与load_xft_model模型加载入口fastchat/model/model_xfastertransformer.py实现generate_stream_xft流式生成函数fastchat/model/model_adapter.py注册--enable-xft等命令行参数并负责模型加载与生成函数的分发。二、安装 xFasterTransformerxFasterTransformer 是一个独立的 pip 包不在 FastChat 的默认依赖中需要单独安装pip install xfastertransformer安装细节支持的 CPU 指令集、平台要求等请参考 xFasterTransformer 官方文档的安装章节。安装完成后FastChat 侧无需任何额外配置只要启动时加上--enable-xft即可启用。源码层面的印证在 fastchat/modules/xfastertransformer.py 的load_xft_model中加载时会先import xfastertransformer若导入失败会打印Error: Failed to load xFasterTransformer.并直接sys.exit(-1)退出这正是未安装该包时的表现。三、准备模型权重xFasterTransformer 需要专用格式转换后的权重不能直接使用 Hugging Face 原始目录。以 ChatGLM 为例转换命令为python ./tools/chatglm_convert.py -i ${HF_DATASET_DIR} -o ${OUTPUT_DIR}其中-i是 Hugging Face 模型目录-o是转换后的输出目录其他模型的转换脚本类似详见 xFasterTransformer 官方文档的 Prepare Model 章节。后续所有 FastChat 命令中的--model-path都应指向转换后的目录例如chatglm2_6b_cpu。四、三个核心参数详解FastChat 暴露了三个 xFT 专用参数其定义统一位于 fastchat/model/model_adapter.py 的add_model_args中因此 CLI 和 model worker 均可使用参数类型默认值说明--enable-xftflagFalse启用 xFasterTransformer 推理框架。未指定时xft_config为None走普通 PyTorch 加载路径--xft-max-seq-lenint4096模型可处理的最大 token 长度包含输入 token 长度。对应XftConfig.max_seq_len--xft-dtypestrNonexFT 计算用的数据类型可选fp16、bf16、int8、bf16_fp16、bf16_int8。混合类型如bf16_fp16表示首 token 用 bfloat16、后续 token 用 float16--xft-dtype未指定时的行为值得注意fastchat/modules/xfastertransformer.py 中若data_type为空则回退为bf16_fp16——即参数帮助文本所述CPU 上首个 token 用 bfloat16、后续 token 用 float16的默认策略。各数据类型在不同 CPU 平台上的支持情况请参照 xFasterTransformer 官方的 Data Type Support 说明。XftConfig的完整默认值fastchat/modules/xfastertransformer.py还包括beam_width1、num_return_sequences1、paddingTrue、early_stoppingFalse等这些字段最终会透传给底层生成接口见第六节。五、CLI 方式启动单核、numactl 与 MPI 三种策略5.1 最简启动fp16# 使用 float16 在全部 CPU 上运行推理 python3 -m fastchat.serve.cli \ --model-path /path/to/models \ --enable-xft \ --xft-dtype fp165.2 多插槽服务器上使用 numactl在多路multi-socket服务器上将进程绑定到单个 NUMA 节点并本地分配内存可以减少跨插槽内存访问官方推荐的命令如下# 绑定 numanode 0数据类型 bf16_fp16首 token 用 bfloat16其余 token 用 float16 numactl -N 0 --localalloc \ python3 -m fastchat.serve.cli \ --model-path /path/to/models/chatglm2_6b_cpu/ \ --enable-xft \ --xft-dtype bf16_fp165.3 使用 MPI 在两个插槽上并行推理xFasterTransformer 支持通过 MPI 把模型切分到两个 socket 上并行计算。官方文档给出的双路启动方式冒号分隔两组进程# 在 numanode 0 和 1 上各启动一个进程数据类型 bf16_fp16 OMP_NUM_THREADS$CORE_NUM_PER_SOCKET LD_PRELOADlibiomp5.so mpirun \ -n 1 numactl -N 0 --localalloc \ python -m fastchat.serve.cli \ --model-path /path/to/models/chatglm2_6b_cpu/ \ --enable-xft \ --xft-dtype bf16_fp16 : \ -n 1 numactl -N 1 --localalloc \ python -m fastchat.serve.cli \ --model-path /path/to/models/chatglm2_6b_cpu/ \ --enable-xft \ --xft-dtype bf16_fp16其中OMP_NUM_THREADS需设置为每插槽的物理核心数LD_PRELOADlibiomp5.so用于统一 OpenMP 运行库。MPI 模式在代码中确有对应处理load_xft_model 在model.model.rank 0时会让非 rank-0 进程进入while True: model.model.generate()循环挂起等待——因为只有 rank 0 负责向 FastChat 返回 token其余进程只参与分布式前向计算。一个容易踩的坑xFasterTransformer 目前仅支持 CPU。在 fastchat/serve/cli.py 与 fastchat/serve/model_worker.py 中都可以看到启用--enable-xft后若--device不是cpuFastChat 会打印xFasterTransformer now is only support CPUs. Reset device to CPU并自动把设备重置为 CPU无需手动指定。六、源码级原理xFT 在 FastChat 中的完整调用链结合仓库源码可以还原--enable-xft之后的完整执行路径1. 参数解析与配置构建。CLI 入口 fastchat/serve/cli.py 检测到args.enable_xft后构造XftConfig(max_seq_lenargs.xft_max_seq_len, data_typeargs.xft_dtype)并作为xft_config传入chat_loop。2. 模型加载分派。load_model 中xFT 分支优先于常规 HuggingFace 加载路径elif xft_config: model, tokenizer load_xft_model(model_path, xft_config) return model, tokenizerload_xft_model 内部做三件事用 Hugging FaceAutoTokenizerpadding_sideleft、trust_remote_codeTrue加载分词器调用xfastertransformer.AutoModel.from_pretrained(model_path, dtypedata_type)加载模型最后把二者封装为XftModel。3. 生成函数路由。get_generate_stream_function 通过模型类型字符串做分派model_type str(type(model)).lower() is_xft xft in model_type ... elif is_xft: return generate_stream_xft即只要加载出的模型对象类型名包含xft推理就自动切换到 xFT 专用的流式生成器。4. 流式生成实现。generate_stream_xft 的工作方式与普通 PyTorch 路径明显不同它用tokenizer(prompt, paddingmodel.config.padding)直接得到input_ids并以max_length max_new_tokens input_echo_len作为生成长度上限——这与--xft-max-seq-len的语义呼应最大序列长度包含输入 token采样参数中repetition_penalty被映射为 xFT 的length_penaltynum_beams/num_return_sequences/early_stopping均取自XftConfig生成在独立Thread中调用model.model.generate配合 transformers 的TextIteratorStreamer实现逐 token 流式输出源码中temperature与top_p目前以注释形式占位unused now, and placehold for future意味着该路径暂不走这些采样参数每个 yield 的 chunk 都携带prompt_tokens/completion_tokens/total_tokens的 usage 统计结束时根据是否达到max_new_tokens返回finish_reason为length或stop。七、以 model worker 形式部署在 FastChat 的 controller/worker 架构下xFasterTransformer 同样通过三个参数启用启动命令与 CLI 完全对称# 默认配置加载模型最大序列长度 4096 python3 -m fastchat.serve.model_worker \ --model-path /path/to/models \ --enable-xft \ --xft-dtype bf16_fp16多插槽服务器上同样建议配合 numactl# 绑定 numanode 0数据类型 bf16_fp16 numactl -N 0 --localalloc python3 -m fastchat.serve.model_worker \ --model-path /path/to/models \ --enable-xft \ --xft-dtype bf16_fp16MPI 双插槽版本# 在 numanode 0 和 1 上各运行一个 worker数据类型 bf16_fp16 OMP_NUM_THREADS$CORE_NUM_PER_SOCKET LD_PRELOADlibiomp5.so mpirun \ -n 1 numactl -N 0 --localalloc python -m fastchat.serve.model_worker \ --model-path /path/to/models \ --enable-xft \ --xft-dtype bf16_fp16 : \ -n 1 numactl -N 1 --localalloc python -m fastchat.serve.model_worker \ --model-path /path/to/models \ --enable-xft \ --xft-dtype bf16_fp16实现上fastchat/serve/model_worker.py 的create_model_worker与 CLI 使用完全相同的XftConfig构建逻辑再把xft_config透传给ModelWorker构造函数model_worker.py多模型场景下 fastchat/serve/multi_model_worker.py 也有相同的 xFT 分支。八、实践要点小结平台前提xFasterTransformer 面向 Intel CPUAVX512/AMX 等指令集收益最大设备固定为 CPUFastChat 会自动纠正非 CPU 的--device权重必须转换先用 xFasterTransformer 的 convert 脚本把 HF 权重转为专用格式--model-path指向转换结果参数语义--xft-max-seq-len默认 4096是含输入在内的总长上限--xft-dtype缺省回退为bf16_fp16NUMA 调优单路用numactl -N node --localalloc双路用mpirun冒号分隔两组进程并预设OMP_NUM_THREADS采样限制从 generate_stream_xft 的占位注释看该路径当前未启用temperature/top_p主要受repetition_penalty映射为 length_penalty与XftConfig中的 beam 相关字段控制选型时需注意与普通 CPU 推理路径的行为差异。【免费下载链接】FastChatAn open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena.项目地址: https://gitcode.com/GitHub_Trending/fa/FastChat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI图像修复工具IOPaint:三步免费擦除照片中的水印、物体和人物 2026/9/6 16:57:55

AI图像修复工具IOPaint:三步免费擦除照片中的水印、物体和人物

AI图像修复工具IOPaint:三步免费擦除照片中的水印、物体和人物 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) an…

阅读更多 →
Awesome-Chinese-LLM 完整指南:如何选对开源中文大模型 2026/9/6 16:57:55

Awesome-Chinese-LLM 完整指南:如何选对开源中文大模型

Awesome-Chinese-LLM 完整指南:如何选对开源中文大模型 【免费下载链接】Awesome-Chinese-LLM 整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主,包括底座模型,垂直领域微调及应用,数据集与…

阅读更多 →
Deep-Live-Cam 一张照片实时换脸 2026/9/6 16:57:55

Deep-Live-Cam 一张照片实时换脸

Deep-Live-Cam 一张照片实时换脸 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam Deep-Live-Cam 是一个开源实时换脸工具,一张…

阅读更多 →
UDS协议与故障诊断:车载诊断测试工程师面试核心指南 2026/9/6 16:57:55

UDS协议与故障诊断:车载诊断测试工程师面试核心指南

简介:面向汽车电子与车载诊断测试岗位求职者的面试解析文档,围绕UDS协议、故障诊断与测试用例设计展开,适合具备汽车电子或嵌入式背景、准备入职或转行车载诊断测试领域的工程师。内容涵盖UDS应用层常见服务测试要点,如诊断会话控…

阅读更多 →
PyTorch Geometric 实战教程:10 行代码训练你的第一个图神经网络 2026/9/6 16:57:55

PyTorch Geometric 实战教程:10 行代码训练你的第一个图神经网络

PyTorch Geometric 实战教程:10 行代码训练你的第一个图神经网络 【免费下载链接】pytorch_geometric Graph Neural Network Library for PyTorch 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric PyTorch Geometric(PyG&am…

阅读更多 →
Aider 代码 Lint 与自动修复机制解析:用 tree-sitter 把 Lint 错误转成 LLM 能看懂的修复指令 2026/9/6 16:54:55

Aider 代码 Lint 与自动修复机制解析:用 tree-sitter 把 Lint 错误转成 LLM 能看懂的修复指令

Aider 代码 Lint 与自动修复机制解析:用 tree-sitter 把 Lint 错误转成 LLM 能看懂的修复指令 【免费下载链接】aider aider is AI pair programming in your terminal 项目地址: https://gitcode.com/GitHub_Trending/ai/aider Aider 在每次应用 LLM 的编辑…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞