FlexGen 在 Google Cloud 上的完整环境搭建指南:单 GPU 高吞吐 LLM 推理的 GCP 部署实战
推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载本文是一份面向 Google Cloud PlatformGCP环境的 FlexGen 端到端安装与部署指南覆盖从系统依赖、CUDA、Anaconda 到 FlexGen 及其基准测试依赖DeepSpeed、transformers的完整命令行操作流程并补充挂载本地 NVMe SSD、磁盘性能评测与显存/内存调优等实战要点。读完本文你可以在 GCP 实例上从零搭建起可运行 OPT-6.7B/30B/175B 高吞吐推理的 FlexGen 环境并理解各安装步骤与底层配置参数的作用。一、GCP 环境概览与准备工作FlexGen 的目标是在单张低成本 GPU上以高吞吐方式运行大规模语言模型如 OPT-175B其核心思路是通过将权重、注意力缓存与激活值按策略卸载offload到 CPU 甚至磁盘换取更大的有效批处理规模。官方性能测试使用的基础硬件即为GCP 上的 NVIDIA T416GB实例配 208GB DRAM 与 1.5TB SSD见 README.md因此 GCP 是 FlexGen 最典型的部署环境之一。在开始安装前建议确认以下几点实例规格至少一张 NVIDIA GPUT4/P100/V100 等均可若计划运行 OPT-30B 及以上模型请预留充足的 CPU 内存如官方测试使用的 208GB DRAM与 SSD 空间。系统Ubuntu 系 Linux文档中所有命令均基于 apt 包管理。磁盘优先选择带本地 NVMe SSD 的实例并将卸载目录挂载到 SSD 上以获得最佳性能具体方法见本文第五节。二、安装系统基础依赖首先更新软件源并安装编译工具链与 MPI 等基础组件来自 docs/gcp_setup.mdsudo apt update sudo apt install build-essential openmpi-bin wget build-essential gitbuild-essential提供 gcc/g 等编译工具FlexGen 源码安装pip install -e .及 DeepSpeed 的本地编译都依赖它。openmpi-binMPI 运行时用于 FlexGen 的分布式多 GPU/多节点流水线并行推理见 benchmark/flexgen/README.md 中bench_*_1x4.sh、bench_*_4x1.sh脚本。wget用于下载 CUDA 与 Anaconda 安装包。git用于克隆 FlexGen 仓库及第三方依赖。三、安装 CUDA 11.6 与 Anaconda3.1 安装 CUDA 11.6文档使用 CUDA 11.6 的本地安装器进行安装wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run sudo sh cuda_11.6.0_510.39.01_linux.run注意下载的.run文件约 2GB建议预先确认磁盘空间。510.39.01为对应的 NVIDIA 驱动版本号安装时按提示选择驱动与 CUDA 工具包组件。CUDA 版本需与后文安装的 PyTorch cu116 轮子保持一致这是 GPU 端可用的前提。3.2 安装 Anaconda 并创建 conda 环境wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh bash Anaconda3-2022.10-Linux-x86_64.sh conda create -n flexgen python3.9 conda activate flexgen文档指定使用Python 3.9创建独立的flexgen环境避免与系统 Python 及包管理互相污染。从 pyproject.toml 可以看到FlexGen 声明requires-python 3.7Python 3.9 完全满足要求且与 torch/transformers 生态兼容性良好。可选安装 Lianmin 的 vim 插件非必需仅为个人开发环境偏好# git clone gitgithub.com:merrymercy/m-setup.git # bash m-setup/scripts/all.sh四、安装 PyTorchcu116 版本在激活的flexgen环境中安装与 CUDA 11.6 匹配的 PyTorchpip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116--extra-index-url指定 PyTorch 官方 cu116 轮子索引确保安装的是 GPU 版 PyTorch。版本兼容性README 要求PyTorch 1.12README.mdpyproject.toml 中同样声明了torch1.12依赖cu116 渠道默认安装的版本均满足该下限。安装完成后可用以下命令快速验证 GPU 可见python3 -c import torch; print(torch.__version__, torch.cuda.is_available())五、从源码安装 FlexGen 及其基准测试依赖5.1 克隆仓库并以开发模式安装 FlexGengit clone gitgithub.com:FMInference/FlexGen.git cd FlexGen pip3 install -e .pip3 install -e .editable 安装会把flexgen包以链接方式装入当前 conda 环境后续对仓库代码的改动即时生效便于研究与二次开发。根据 pyproject.toml运行时依赖包括torch1.12、transformers4.24、numpy、tqdm、pulp、attrs其中pulp用于策略优化器成本模型相关的线性规划求解。5.2 安装 DeepSpeed基准测试所需FlexGen 的性能对比基准中包含 DeepSpeed ZeRO-Inference 基线需从仓库自带的第三方源码安装cd FlexGen/benchmark/third_party/DeepSpeed sudo apt install libaio-dev pip3 install -e .libaio-dev是 Linux 异步 I/OAIO库的开发头文件DeepSpeed 的异步 I/O 算子async_io编译必需。若你只运行 FlexGen 本体不跑对比基准这一步可以跳过benchmark/third_party/DeepSpeed 目录下是完整的 DeepSpeed 源码副本。5.3 安装 transformers 与 acceleratecd FlexGen/benchmark/third_party/transformers pip3 install -e . pip3 install accelerate0.15.0仓库自带一份 transformers 源码副本以开发模式安装可保证与 FlexGen 基准脚本如benchmark/hf_ds/bench_hf.py所用版本一致。accelerate0.15.0用于 Hugging Face Accelerate 基线对比见 benchmark/batch_size_table.md 中的性能对照表固定版本以复现官方结果。安装完成后仓库根目录下的完整环境即可用于运行 benchmark/flexgen 中的基准套件cd FlexGen/benchmark/flexgen python3 bench_suite.py 30b_1x1 # OPT-30B 单 GPU 基准 python3 bench_suite.py 30b_1x1_comp # 带 int4 压缩的 OPT-30B 基准六、安装后的快速验证与核心参数说明6.1 先跑一个小模型验证环境环境就绪后建议先用可完全放入 GPU 的小模型验证安装是否成功python3 -m flexgen.flex_opt --model facebook/opt-1.3b该命令会从 Hugging Face 自动下载权重并执行一次文本生成与吞吐基准测试见 README.md。6.2 理解--percent卸载策略参数运行大模型时需要显式指定卸载策略。--percent接收6 个整数依次为位置含义1权重weight放在 GPU 的百分比2权重放在 CPU 的百分比3注意力缓存attention cache放在 GPU 的百分比4注意力缓存放在 CPU 的百分比5激活值activations放在 GPU 的百分比6激活值放在 CPU 的百分比来源见 flexgen/flex_opt.py。每组权重/缓存/激活的 GPU 与 CPU 百分比之和为 100剩余部分自动落到磁盘对应源码中w_disk_percent、cache_disk_percent、act_disk_percent的计算见 flexgen/flex_opt.py。例如# OPT-30B权重全部放 CPU缓存与激活全放 GPU python3 -m flexgen.flex_opt --model facebook/opt-30b --percent 0 100 100 0 100 06.3 关联的常用命令行参数结合 flexgen/flex_opt.py 的参数定义以下参数在实际调优中高频使用参数默认值说明--offload-dir~/flexgen_offload_dir张量卸载到磁盘的目录应指向快速 SSD见第五节--gpu-batch-size4GPU 上的批处理大小增大可提升吞吐--num-gpu-batches1GPU 上缓存的批次数与--gpu-batch-size共同决定有效批量--pin-weightTrue是否将权重页锁定pinned内存置 0 可降低约 20% 的 CPU 权重内存占用--compress-weightFalse启用权重 int4 压缩可降低约 70% 的权重内存--compress-cacheFalse启用注意力缓存压缩--cpu-cache-computeFalse在 CPU 上计算注意力缓存以减少 GPU 占用例如完全把权重卸载到磁盘、几乎不占用 GPU/CPU 内存的配置python3 -m flexgen.flex_opt --model facebook/opt-175b --percent 0 0 100 0 100 0 --offload-dir YOUR_SSD_FOLDER6.4 生成 API 验证也可以直接运行官方示例 flexgen/apps/completion.py 验证两句话的补全流程# OPT-6.7B约需 15GB GPU 显存 python3 -m flexgen.apps.completion --model facebook/opt-6.7b # OPT-30B约需 90GB CPU 内存 python3 -m flexgen.apps.completion --model facebook/opt-30b --percent 0 100 100 0 100 0七、GCP 上的磁盘与性能优化7.1 将卸载目录挂载到本地 NVMe SSDFlexGen 的磁盘卸载性能直接受 I/O 速度影响。官方建议将默认卸载目录~/flexgen_offload_dir放在快速 SSD 上见 benchmark/flexgen/README.md。GCP 实例自带本地 NVMe 时可直接使用仓库提供的挂载脚本sudo bash scripts/mount_nvme_gcp.sh ~/该脚本scripts/mount_nvme_gcp.sh将 4 块 NVMe 盘/dev/nvme0n1/dev/nvme0n4组建为条带化striped逻辑卷并挂载到flexgen_offload_dir实现多盘并行读写。AWS 实例可参考 scripts/mount_nvme_aws.sh。7.2 磁盘性能评测与系统调优仓库的 docs/disk_commands.txt 提供了 GCP 上常用的三条系统级调优命令# 1. 清理内存中的磁盘缓存释放 page cache sudo sysctl -w vm.drop_caches3 # 2. 评测磁盘写性能4KB 块大小写 200 万个块 dd if/dev/zero ofbenchfile bs4k count2000000 # 3. 限制某个进程的内存占用例如限制 python3 为 13GB sudo systemd-run --scope --propertyMemoryLimit13G python3第一条命令在反复跑卸载到磁盘的基准测试时可避免 page cache 污染测试结果。第二条命令用于粗略评估 SSD 的 4KB 随机写带宽这是磁盘卸载场景下最关键的指标之一。第三条命令用于模拟内存受限环境验证 FlexGen 在给定 DRAM 预算下的卸载策略。7.3 内存不足OOM时的降级手段若 GPU/CPU 内存不足README 给出了三档由快到慢的调整方案README.md--pin-weight 0关闭权重页锁定降低约 20% 的 CPU 权重内存追加--compress-weight启用权重压缩降低约 70% 的权重内存--percent 0 0 100 0 100 0将所有权重卸载到磁盘几乎不占 GPU/CPU 内存。这三档方案可叠加组合按实际资源余量灵活选用。八、小结按照本文的安装顺序——系统依赖 → CUDA 11.6 → Anaconda Python 3.9 → PyTorch cu116 → FlexGen 源码安装 → DeepSpeed/transformers 基准依赖即可在 GCP 实例上完整复现 README.md 中展示的单 GPU 高吞吐推理能力与 benchmark/batch_size_table.md 中的性能对比实验。安装完成后再结合本地 NVMe 挂载、磁盘缓存清理与--percent卸载策略调优你就能在自己的 GCP 预算内以最小成本运行 OPT-30B 乃至 OPT-175B 级别的模型批处理任务。赞分享推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载相关推荐whichllm高级配置自定义基准测试权重与硬件性能阈值whichllm高级配置自定义基准测试权重与硬件性能阈值 whichllm是一款帮助用户找到在本地硬件上实际运行并表现最佳的LLM工具它基于真实、时效性强的推理引擎大模型Discourse Docker高级技巧自定义模板与hooks深度应用指南Discourse Docker高级技巧自定义模板与hooks深度应用指南 想要充分发挥Discourse论坛的潜力吗掌握Discourse Docker的后端DevOps老 Mac 免费再战五年OpenCore Legacy Patcher 让旧电脑装上新版 macOS 的完整流程老 Mac 免费再战五年OpenCore Legacy Patcher 让旧电脑装上新版 macOS 的完整流程 OpenCore Legacy Patche推理引擎大模型上一篇Salt 开发指南面向 AI Agent 的模块编写、状态机与仓库协作规范下一篇【亲测免费】 推荐开源项目AndroidCupsPrint - 打印自由触手可得创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考