ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Metaseq 环境搭建完整指南:从 PyTorch 到 fairscale 与 OPT 大规模语言模型训练框架的安装实战

Metaseq 环境搭建完整指南:从 PyTorch 到 fairscale 与 OPT 大规模语言模型训练框架的安装实战 大模型深度学习分布式训练预训练【免费下载链接】metaseqRepo for external large-scale work项目地址https://gitcode.com/gh_mirrors/me/metaseq点击查看免费下载导读本文以 Metaseq 官方 环境搭建文档 为主线系统讲解从零搭建这套用于 Open Pre-trained TransformersOPT大规模语言模型训练代码库的全部步骤包括 CUDA 11.6 版 PyTorch 的安装、特定分支 fairscale 的编译安装、metaseq 本体及其 C/CUDA 扩展的安装以及 pre-commit 钩子的启用。读完本文你将掌握一套可复现、可排错、可进一步扩展到训练与推理任务的完整环境准备方案并能理解每个安装步骤背后的源码依赖关系例如 fairscale 的 FSDP 封装与setup.py中编译内核的细节。一、总览Metaseq 依赖的外部仓库Metaseq 是一个基于 PyTorch、从 fairseq 衍生而来、面向 OPT 系列模型训练与推理的代码库可参见 README.md。根据 docs/setup.md 的说明它运行依赖以下外部仓库fairscalehttps://github.com/facebookresearch/fairscale.git提供 Fully Sharded Data ParallelFSDP等分布式训练基础设施。注意 Metaseq依赖的是 fairscale 的一个特定历史分支/提交并非任意版本这一点是整套安装中最容易踩坑的地方。说明在 Metaseq 源码中fairscale 被大量用于模型并行与分片优化器场景。典型的使用位置包括 distributed/fully_sharded_data_parallel.py、models/distributed_model.py、optim/shard.py 与 modules/checkpoint_activations.py 等。其中fully_sharded_data_parallel.py的FullyShardedDataParallel类直接继承自fairscale.nn.data_parallel.FullyShardedDataParallel并在其基础上增加了 Metaseq 专属的 checkpoint 保存/加载逻辑state_dict与load_state_dict的分片与非分片两种模式。因此如果 fairscale 未正确安装这些模块在导入时就会报出 “Cannot find FullyShardedDataParallel. Please install fairscale with: pip install fairscale” 之类的错误。二、安装 PyTorchCUDA 11.6 版本官方推荐的安装命令如下pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116这条命令通过--extra-index-url指向 PyTorch 官方为 CUDA 11.6 构建的 wheel 仓库从而安装的是带 CUDA 支持的 PyTorch 二进制而不只是 CPU 版。它同时安装 torch、torchvision、torchaudio 三个配套包。几个值得注意的要点CUDA 工具链的配合--extra-index-url指定的是 wheel 仓库地址但要在本机编译 CUDA 扩展仍需系统具备对应版本的 nvccCUDA 编译器。从 Dockerfile 可以看到官方镜像使用的是nvidia/cuda:11.3.1-devel-ubuntu20.04并安装torch1.10.1cu113说明实际开发环境与文档描述的 cu116 略有出入具体以你的 GPU 驱动与 CUDA 版本为准。版本灵活性官方文档没有锁定 torch 的具体小版本。如果你需要与后续 C/CUDA 内核编译兼容建议查阅 setup.py 中的要求它通过torch.utils.cpp_extensionCUDAExtension/CppExtension来编译扩展安装时会打印torch.__version__并且要求 PyTorch 1.0 以上TORCH_MAJOR 0时直接报错。Python 版本前提setup.py在脚本开头强制要求Python 3.6否则直接退出安装因此请先确认你的 Python 版本满足要求。三、安装 fairscale指定分支编译安装fairscale 是 Metaseq 分布式训练的关键依赖官方文档给出了如下安装步骤git clone https://github.com/facebookresearch/fairscale.git cd fairscale git checkout fixing_memory_issues_with_keeping_overlap_may24 pip3 install -e .这套操作的核心含义是克隆官方仓库git clone拉取 fairscale 源码切换到指定分支git checkout fixing_memory_issues_with_keeping_overlap_may24这是 Metaseq 官方验证过的分支分支名直译为“修复内存问题并保持重叠”与 FSDP 训练时的参数预取/前向反向重叠优化相关以开发模式安装pip3 install -e .使用 editable 模式安装源码改动即时生效便于调试。同样的分支选择在 Dockerfile 中也可以得到印证官方镜像先git clone --branch prefetch_fsdp_params_simple再git checkout fixing_memory_issues_with_keeping_overlap_may24随后pip3 install -e .。这表明fixing_memory_issues_with_keeping_overlap_may24是 Metaseq 团队在对应时期实际使用的 fairscale 快照分支。为什么必须使用这个特定分支从源码角度可以找到明确证据distributed/fully_sharded_data_parallel.py 在导入时尝试try: from fairscale.nn.data_parallel import FullyShardedDataParallel as FSDP from fairscale.utils.testing import DummyProcessGroup has_FSDP True except ImportError: FSDP torch.nn.Module has_FSDP False随后FullyShardedDataParallel类继承该 FSDP并实现state_dict/load_state_dict的分片local_state_dict与全量两种 checkpoint 语义fsdp_enable_wrap与fsdp_wrap则依赖fairscale.nn.enable_wrap/fairscale.nn.wrap。这些 API 与接口行为都对应 fairscale 特定时期的实现因此使用任意其他版本尤其是与上述 API 不兼容的新版本可能导致导入失败或行为不一致。安装失败时最常见的报错就是ImportError: Cannot find FullyShardedDataParallel。补充Metaseq 还提供了自己的轻量 FSDP 实现路径metaseq.distributed.fully_sharded_data_parallel但在默认训练配置下仍以 fairscale 作为基础。若你的环境无法联网访问 GitHub也可以把 fairscale 源码作为本地依赖导入但分支一致性必须保证。四、安装 Metaseq 本体安装完 fairscale 后继续安装 metaseqgit clone https://github.com/facebookresearch/metaseq.git cd metaseq pip3 install -e .pip3 install -e .会执行仓库根目录的 setup.py它完成的工作远比普通安装复杂主要包括自动生成版本号write_version_py()读取metaseq/version.txt当前内容为0.0.1并尝试通过git rev-parse HEAD把最近一次提交的短哈希追加到版本字符串写入metaseq/version.py。编译 Cython 数据工具setup.py会编译metaseq.data.data_utils_fast源文件 data/data_utils_fast.pyx与metaseq.data.token_block_utils_fast源文件 data/token_block_utils_fast.pyx用于加速数据批处理与 token block 构建编译参数为-O3macOS 上额外加-stdliblibc。按需编译 Megatron 融合内核默认会编译metaseq.modules.megatron.fused_kernels.scaled_upper_triang_masked_softmax_cuda与scaled_masked_softmax_cuda对应metaseq/modules/megatron/fused_kernels/下的 .cpp/.cu 源文件。如果不需要可以在安装命令中传入--global-option--no_megatron跳过见setup.py中if --no_megatron not in sys.argv分支。按需编译 APEX 风格 CUDA 内核默认会编译amp_C、fused_layer_norm_cuda、fused_dense_cuda、fused_adam_cuda与apex_C源文件在 metaseq/modules/apex/ 下。这一步要求系统存在 nvcc如果CUDA_HOME为 None安装会直接抛出RuntimeError提示“Are you sure your environment has nvcc available?”。不需要时可以传--global-option--no_apex跳过。安装运行时依赖install_requires包含 hydra-core、omegaconf、fire、flask、tensorboard、cython、ninja、portalocker、pre-commit、pytest、tokenizers 等大量包其中protobuf3.20.2是显式钉死的版本源码注释说明是为了规避 protobuf 与 tensorboard 的兼容问题。注册控制台命令安装完成后会提供metaseq-train对应 cli/train.py 的cli_main、metaseq-validatecli/validate.py、opt-baselineslauncher/opt_baselines.py与metaseq-api-localcli/interactive_hosted.py四个命令行入口。因此pip3 install -e .不只是“装一个 Python 包”而是一次包含 Cython 与 CUDA 内核编译的完整构建过程。如果你的机器没有 GPU 工具链强烈建议使用--no_megatron与--no_apex两个开关例如pip3 install -e . --global-option--no_megatron --global-option--no_apex可选 extras 说明setup.py 还声明了几组可选依赖可按需安装extra 名称安装命令用途devpip3 install -e .[dev]开发工具flake8、black22.3.0、mypy、aim训练可视化、azure-storage-blobtestpip3 install -e .[test]测试依赖iopath、transformers、pyarrow、boto3、pandas、bitsandbytesmultimodalpip3 install -e .[multimodal]多模态扩展albumentations、dalle_pytorch、einops、matplotlib、pytorchvideo、wandb、webdataset五、启用 pre-commit 钩子pre-commit install该命令在.git/hooks中注册 pre-commit 钩子使每次git commit前自动执行仓库根目录 .pre-commit-config.yaml 中配置的检查。当前仓库配置的钩子是repos: - repo: local hooks: - id: black name: Black Python code formatting entry: bash -c black $; git add -u -- language: python types: [python]即对所有 Python 文件运行Black自动格式化并在格式化后自动git add这些改动保证提交的代码风格统一。pre-commit本身已经作为install_requires的一部分随 metaseq 安装因此这条命令可以直接执行。六、安装后的验证与后续步骤1. 验证核心依赖可导入可以快速验证 fairscale 与 metaseq 是否正确安装import torch import fairscale import metaseq print(torch.__version__) print(metaseq.__version__) # 来自自动生成的 metaseq/version.py若 fairscale 导入失败请回到第三节重新确认分支若 metaseq 导入时报 CUDA 扩展缺失请确认是否跳过--no_apex编译或 nvcc 环境是否就绪。2. 查看训练入口是否可用metaseq-train --help metaseq-validate --help opt-baselines --help正常输出帮助信息说明命令行入口已注册成功。3. 参考官方文档继续完成本环境的搭建后可按顺序阅读仓库内其他文档训练指南 docs/training.md介绍如何用opt-baselines启动小规模基线训练以及metaseq-train的完整训练命令含--fp16、--use-sharded-state、--aim-repo等参数API 文档 docs/api.md了解推理/服务化接口FasterTransformer 转换指南 docs/faster-transformer.mdOPT 模型 checkpoint 转换与部署OPT 项目介绍 projects/OPT/README.mdOPT 模型系列与下载说明模型与数据卡片见 projects/OPT/model_card.md。训练文档 docs/training.md 中明确要求“先完成 setup 文档中的全部安装”因此本环境搭建是后续一切工作的前提。七、常见问题与排错速查现象可能原因处理方式Cannot find FullyShardedDataParallelfairscale 未安装或分支不对按第三节重新安装fixing_memory_issues_with_keeping_overlap_may24分支Building apex kernels was requested, but nvcc was not found缺少 CUDA 编译器安装 CUDA devel 环境或安装时加--no_apexSorry, Python 3.6 is required for metaseq.Python 版本过低升级到 Python 3.6推荐 3.8/3.9编译 Megatron/APEX 内核耗时极长或内存不足缺少 GPU 工具链使用--no_megatron --no_apex跳过编译pre-commit 钩子未生效未执行pre-commit install在 metaseq 仓库根目录执行该命令总结Metaseq 的环境搭建本质上是一条“PyTorchCUDA 版→ 特定分支 fairscale → metaseq含 C/CUDA 内核编译→ pre-commit”的依赖链。其中最容易出错的环节在于 fairscale 必须使用官方指定的fixing_memory_issues_with_keeping_overlap_may24分支可从 Dockerfile 与 distributed/fully_sharded_data_parallel.py 的导入与封装逻辑相互印证以及 metaseq 默认编译 CUDA 内核时对 nvcc 的硬性要求。按本文顺序完成安装并通过验证命令后即可顺利进入 训练指南 中opt-baselines与metaseq-train的实操环节。赞分享大模型深度学习分布式训练预训练【免费下载链接】metaseqRepo for external large-scale work项目地址https://gitcode.com/gh_mirrors/me/metaseq点击查看免费下载相关推荐大模型强化学习框架安装避坑指南从环境搭建到实战训练大模型强化学习框架安装避坑指南从环境搭建到实战训练 verlVolcano Engine Reinforcement Learning for LLMs是人工智能大模型强化学习RLHF分布式训练微调CANN/ops-math cumsum算子文档aclnnCumsum 查看源码 https://link.gitcode.com/i/4e5a7fae9ce54dbda200f9eeff786788大模型深度学习分布式训练预训练Front-End-Checklist 性能规则实战禁用首屏above-the-fold内容的懒加载以保障 LCPFront End Checklist 性能规则实战禁用首屏above the fold内容的懒加载以保障 LCP 本文围绕 Front End Chec大模型深度学习分布式训练预训练上一篇ESPullToRefresh与UITableView、UICollectionView完美结合5个实战案例下一篇Fine Uploader粘贴上传功能从剪贴板直接上传图片的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表