ARTICLE DETAIL

资讯详情

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

nlp-recipes 环境搭建完全指南:conda 依赖生成、GPU 混合精度与 Docker 实战

nlp-recipes 环境搭建完全指南:conda 依赖生成、GPU 混合精度与 Docker 实战 NLP【免费下载链接】nlp-recipesNatural Language Processing Best Practices Examples项目地址https://gitcode.com/gh_mirrors/nl/nlp-recipes点击查看免费下载本指南是微软开源项目nlp-recipesNatural Language Processing Best Practices Examples的官方环境搭建手册 SETUP.md 的中文深度解读。文章围绕如何跑通仓库内全部 Jupyter notebook这一核心目标完整覆盖 Python CPU / Python GPU 两种 conda 环境的生成与安装、Apex 混合精度训练、Jupyter kernel 注册、utils_nlp工具包安装以及 NVIDIA Docker 镜像构建并逐层结合仓库源码说明底层实现原理。读完本文你将能够在一台裸机、云端数据科学虚拟机或 Docker 容器中从零搭建出可运行 nlp-recipes 全部示例的深度学习环境。一、SETUP.md 在仓库中的定位nlp-recipes 是一个以自然语言处理最佳实践与示例为目标的仓库其主体内容是 examples 目录下覆盖文本分类、命名实体识别、文本摘要、蕴含推理、问答、句间相似度、词向量、情感分析等场景的 Jupyter notebook以及支撑这些示例的 utils_nlp 工具库。绝大多数算法依赖深度神经网络与预训练 Transformer 模型BERT、XLNet、RoBERTa、ALBERT、UniLM 等因此环境依赖较重。仓库根目录的 README.md 在Getting Started一节中明确引导用户先阅读 SETUP.md 完成环境配置再进入示例。SETUP.md 是仓库唯一的官方环境搭建入口文档其内容可以概括为三条主线本地/虚拟机环境用 conda 管理依赖环境文件由仓库脚本自动生成云端环境Azure DSVM 与 Azure ML Notebook VM 两种托管工作站容器环境通过 NVIDIA Docker 构建自带全部依赖的镜像。文档在开头给出了两条重要的环境选型建议推荐运行环境是 Azure 数据科学虚拟机DSVM由于相当数量的算法依赖深度学习建议选用GPU 型 DSVM当需要大规模训练、模型运营化operationalization或超参数调优时推荐使用 Azure MLAzure 机器学习服务这一建议与仓库内大量*_azureml.ipynb示例相对应。二、计算环境选择Python CPU 与 Python GPU根据待运行的 NLP 系统和具体 notebook 的不同计算需求差异很大。SETUP.md 明确指出当前仓库支持两类环境Python CPU 环境适用于轻量任务、推理演示与资源受限机器Python GPU 环境适用于训练 Transformer 等大规模深度模型。两种环境的 conda YAML 文件都可以通过下文介绍的generate_conda_file.py脚本一键生成CPU 与 GPU 环境的核心差异在于 PyTorch 的安装方式与 cudatoolkit 的引入。仓库的持续集成也遵循这一划分例如 tests/ci/cpu_unit_tests_linux.yml 中即通过source activate nlp_cpu激活 CPU 环境后运行pytest tests/unit。三、可选的云端工作站Azure ML Notebook VM如果希望完全跳过本地安装SETUP.md 推荐了Azure Machine Learning service 的 Notebook VM——一个专为数据科学家打造的云端工作站。其特点包括直接集成在 Azure Machine Learning 服务中为 Python 开发者提供代码优先code-first的体验可以在工作区内便捷地构建和部署模型数据科学家可在熟悉的 Jupyter notebook 界面中完成 Azure ML Python SDK 支持的全部操作运行于安全、企业级的环境中预配置了机器学习所需环境安全且易于使用支持完全自定义。创建好 Notebook VM 后直接在其终端中按下一节本地或虚拟机环境搭建的步骤操作即可无需任何额外改动。四、本地或虚拟机环境搭建核心章节4.1 环境要求SETUP.md 给出的硬性前提如下要求说明操作系统Linux、macOS 或 Windows 均可Windows 附加要求必须安装Microsoft Visual C 14.0用于编译部分 Python 包需单独下载 Visual C Build ToolsPython 发行版Miniconda 或 AnacondaPython 版本 ≥ 3.6Azure DSVM 已预装可跳过此步直接执行后续命令conda 版本建议更新到最新版conda update -n base -c defaults conda⚠️ 注意SETUP.md 明确提示Windows 机器不被完全支持NOT FULLY SUPPORTED使用风险自负。4.2 依赖设置原理generate_conda_file.py 源码解析仓库提供了一个一键脚本 tools/generate_conda_file.py用于生成包含全部正确依赖的 conda 环境 YAML 文件。该脚本本身是一个值得细读的源码其核心设计如下命令行参数tools/generate_conda_file.py参数类型默认值作用--namestr无自定义 conda 环境名同时决定输出 YAML 文件名--gpu开关关闭引入 GPU 支持包--cuda_versionstr10.1指定要安装的 cudatoolkit 运行时版本channels 与依赖包组织脚本固定使用defaults、conda-forge、pytorch三个 channelL33。依赖被组织为conda 基础包CONDA_BASE、conda GPU 包CONDA_GPU、pip 包PIP_BASE以及按平台区分的DARWIN/LINUX/WIN32系列字典。关键版本约束如下CONDA_BASE 核心依赖python3.6.8、pip19.1.1、ipykernel4.6.1、jupyter1.0.0、matplotlib2.2.2、numpy1.13.3、pandas0.24.2、pytest3.6.4、pytorch-cpu1.0.0、scipy1.0.0、h5py2.8.0、tensorflow1.15.0、tensorflow-hub0.7.0、dask[dataframe]1.2.2、papermill1.2.1CONDA_GPU 追加依赖pytorch1.4.0、cudatoolkit10.1可被--cuda_version覆盖、numba0.38.1PIP_BASE 关键包transformers2.9.0Hugging Face、spacy2.1.8、gensim3.7.0、nltk3.4、seqeval0.0.12、allennlp0.8.4、azureml-sdk[automl,notebooks,contrib]1.0.85、pytorch-pretrained-bert0.6、torchtext0.4.0、pyrouge、indic-nlp-library以及用于摘要场景的s2s-ft以-e git...形式从源码安装。平台分支逻辑L162-L181脚本通过sys.platform判断darwin/linux/win32为不同平台追加对应依赖Windows GPU 环境会额外指定pytorch1.0.0与cuda90。若平台不支持脚本会抛出Unsupported platform异常。YAML 输出结构脚本生成的 YAML 文件包含name、三个channels、dependenciesconda 包 嵌套pip:段并在文件头注释中写入conda env create/conda env update/ Jupyter kernel 注册三条提示命令。仓库还提供了姊妹脚本 tools/generate_requirements_txt.py它复用generate_conda_file.py中定义的各依赖字典将全部依赖去重后输出为requirements.txt供非 conda 场景使用。4.3 安装默认Python CPU环境假设仓库已克隆到本机并命名为nlp-recipes安装 CPU 环境的完整流程为cd nlp-recipes python tools/generate_conda_file.py conda env create -f nlp_cpu.yaml执行后会在仓库根目录生成nlp_cpu.yaml并创建名为nlp_cpu的 conda 环境。若想自定义环境名可使用-n标志python tools/generate_conda_file.py -n my_env_name注意环境名会同时作为输出 YAML 的文件名源码 L143-L149 中--gpu默认环境名为nlp_gpuCPU 默认环境名为nlp_cpu--name可覆盖两者。4.4 安装 Python GPU 环境GPU 环境的安装关键在于分清 CUDA 驱动driver版本与 CUDA 运行时runtime版本两者是不同的概念driver 版本由显卡驱动提供是整个 CUDA 体系的天花板runtime 版本指 conda 环境中安装的cudatoolkit版本必须 ≤ driver 版本。步骤 1查看 CUDA driver 版本nvidia-smi输出顶部即显示 driver 版本。例如----------------------------------------------------------------------------- | NVIDIA-SMI 410.79 Driver Version: 410.79 CUDA Version: 10.0 | -----------------------------------------------------------------------------步骤 2确定应安装的 CUDA runtime 版本runtime 版本即下一步安装的 cudatoolkit 版本应 ≤ 步骤 1 查到的 driver 版本。当前仓库使用的PyTorch 1.4.0兼容 cuda 9.2 与 cuda 10.1脚本生成的 GPU 环境默认安装cudatoolkit 10.1。若 driver 版本 10.1则调用脚本时需追加--cuda_version 9.2。步骤 3安装 GPU 环境当 CUDA driver 版本 ≥ 10.1 时cd nlp-recipes python tools/generate_conda_file.py --gpu conda env create -n nlp_gpu -f nlp_gpu.yaml当 CUDA driver 版本 10.1 时cd nlp-recipes python tools/generate_conda_file.py --gpu --cuda_version 9.2 conda env create -n nlp_gpu -f nlp_gpu.yaml--cuda_version参数在源码中直接改写CONDA_GPU[cudatoolkit]L156从而精确控制 YAML 中的 cudatoolkit 版本。步骤 4可选启用混合精度训练mixed precision training混合精度训练对训练时间较长的模型尤其有价值通常可将训练时间缩短约 50%同时保持模型质量不变此结论来自原文档说明实践中结果会随模型与数据有所不同。启用方式为在nlp_gpu环境中安装 NVIDIA 的 Apex 库conda activate nlp_gpu git clone https://github.com/NVIDIA/apex.git cd apex pip install -v --no-cache-dir --global-option--cpp_ext --global-option--cuda_ext ./故障排查若出现RuntimeError: Cuda extensions are being compiled with a version of Cuda that does not match the version used to compile Pytorch binaries.说明nvccCUDA 编译器驱动版本与 cudatoolkit runtime 版本不一致。用nvcc -V检查 nvcc 版本nvcc -V若 nvcc 版本为 10.0建议升级到 10.1并以cudatoolkit10.1重新创建 conda 环境。升级 CUDA driver 与 nvcc 的参考步骤原文档中经过验证的流程a. 更新 apt 并重启机器sudo apt-get update sudo apt-get upgrade --fix-missing sudo rebootb. 从 NVIDIA 官网下载目标平台的 CUDA toolkit.run文件。例如 Ubuntu 16.04 的 Linux 机器可使用wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.105_418.39_linux.runc. 执行安装先接受用户协议若已安装 418.39 驱动与 CUDA 10.1 但 nvcc 为 10.0可取消勾选 DRIVER 仅重装 CUDA toolkit 以升级 nvcc若选择安装全部组件则先按屏幕提示卸载现有 NVIDIA 驱动与 CUDA toolkit 后再重跑安装命令并在提示时选择 Yes 更新 CUDA symlinksudo sh cuda_10.1.105_418.39_linux.rund. 重新运行nvidia-smi与nvcc -V确认 NVIDIA driver 418.39、CUDA driver 10.1 与 nvcc 10.1 三者就绪e. 重复上述步骤 3 4以 cudatoolkit runtime 10.1 重建 conda 环境并安装 Apex即可启用混合精度训练。五、将 conda 环境注册为 Jupyter kernel创建好的 conda 环境需要注册为 Jupyter kernel 才能在 notebook 中选用。SETUP.md 给出的通用命令为conda activate my_env_name python -m ipykernel install --user --name my_env_name --display-name Python (my_env_name)在 DSVM 上可通过浏览器访问https://your-vm-ip:8000连接 JupyterHub若提示输入用户名密码使用登录虚拟机的账号密码即可。Jupyter 相关依赖jupyter、ipykernel已包含在generate_conda_file.py生成的依赖清单中无需额外安装。六、安装 utils_nlp 工具包6.1 开发模式安装pip install -e .仓库根目录提供了 setup.py用于将utils_nlp工具包安装为 Python 包供 examples 下的示例 notebook 直接导入使用。从仓库根目录执行pip install -e .-eeditable开发模式的含义是以源码形式安装对utils_nlp源码目录的任何修改都会立即反映到已安装的包中无需重新安装——对持续更新的工具库非常实用。从 setup.py 源码可以看到该包名为utils_nlp版本号取自 utils_nlp/init.py 中的VERSION 2.0.0并声明python_requires3.6。值得注意的是setup.py中install_requires[]为空——这印证了 SETUP.md 的明确说明pip 安装不会安装任何依赖包环境中的依赖一律通过上文 conda 方式建立两者分工明确。6.2 在外部项目中安装如果要在外部项目中使用utils_nlp推荐直接从 Git 仓库以可编辑模式安装pip install -e gitgitgithub.com:microsoft/nlp-recipes.gitmaster#eggutils_nlp该方式同样以-e可编辑模式安装因此对源码的更新同样会即时生效。执行上述任一命令后utils_nlp即进入当前 conda 虚拟环境可用以下命令验证安装是否成功pip list6.3 版本信息仓库的版本策略遵循语义化版本详见 VERSIONING.md版本号由setuptools_scm依据 git 提交历史自动计算无需手工维护可通过python setup.py --version查看当前推导出的版本。七、Docker 方式搭建环境对于希望完全容器化的用户SETUP.md 提供了基于 NVIDIA Docker 的完整方案。7.1 预置条件已安装Docker已安装NVIDIA Docker 驱动用于在容器内访问 GPU。7.2 构建 Docker 镜像仓库 docker 目录下提供了现成的 Dockerfile构建命令为cd docker docker build -f . -t nlp-recipes构建完成后会得到一个包含全部依赖、名为nlp-recipeslatest tag的镜像。从 docker/Dockerfile 源码可以还原镜像的构建逻辑基础镜像为nvidia/cuda自带 CUDA 的官方镜像安装 Miniconda 到/opt/conda并初始化conda activate下载 nlp-recipes 仓库源码压缩包并解压复用仓库的依赖生成脚本执行python /root/nlp-recipes-staging/tools/generate_conda_file.py --gpu生成 GPU 环境文件再conda env create -n nlp_gpu -f nlp_gpu.yaml创建nlp_gpu环境——这再次印证了一条脚本本地 / 云端 / 容器三处通用的设计在nlp_gpu环境中执行pip install -e .安装utils_nlp并用python -m ipykernel install注册 Jupyter kernel暴露8888/tcp端口容器启动命令CMD为以--allow-root --ip 0.0.0.0 --port 8888 --no-browser方式启动 Jupyter notebook。7.3 运行容器docker run --gpus all -p 8888:8888 nlp-recipes-p 8888:8888将本机 8888 端口映射到容器的 8888 端口--gpus all使容器可访问宿主机全部 GPU。启动后即可在浏览器中打开http://localhost:8888使用 notebook。7.4 Docker 故障排查权限问题docker build或docker run若提示权限不足可用sudo前缀执行端口占用若提示port already in use可换用本机其他端口映射到容器 8888 端口例如docker run --gpus all -p 9000:8888 nlp-recipes八、环境就绪后的验证路径完成上述任一路径本地 conda、云端工作站或 Docker的环境搭建后即可按以下方式验证并进入实战运行单元测试激活对应 conda 环境后可仿照 CI 配置如 tests/ci/cpu_unit_tests_linux.yml 中的pytest --durations0 tests/unit运行 tests/unit 下的测试快速验证环境完整性打开示例 notebook进入 examples 目录选择感兴趣的场景如 examples/text_classification、examples/question_answering、examples/text_summarization并确保 notebook 的 kernel 指向已注册的 conda 环境如Python (nlp_cpu)或Python (nlp_gpu)下载数据集与预训练模型多数 notebook 会按需下载数据集数据集清单见 DatasetReferences.md与 Hugging Face 预训练模型首次运行耗时较长属正常现象。至此从零开始搭建 nlp-recipes 运行环境的全部官方路径——CPU/GPU conda 环境、云端工作站、Docker 容器——均已打通。后续学习建议以 examples/README.md 为索引按场景逐个运行 notebook并结合 utils_nlp 源码理解每个模型的具体实现。赞分享NLP【免费下载链接】nlp-recipesNatural Language Processing Best Practices Examples项目地址https://gitcode.com/gh_mirrors/nl/nlp-recipes点击查看免费下载相关推荐终极依赖管理神器pipreqs与conda混合环境实战完全指南终极依赖管理神器pipreqs与conda混合环境实战完全指南 在Python开发中依赖管理一直是开发者面临的痛点问题。当你在复杂的conda环境中开发时开发工具CLIcomputervision-recipes 环境搭建完全指南conda 安装、GPU 计算环境与 Jupyter 隧道配置computervision recipes 环境搭建完全指南conda 安装、GPU 计算环境与 Jupyter 隧道配置 本指南以仓库根目录的 SETUP计算机视觉深度学习handson-ml2 安装与环境搭建完整指南从 conda 依赖管理到 Jupyter 运行与 GPU/Docker 部署handson ml2 安装与环境搭建完整指南从 conda 依赖管理到 Jupyter 运行与 GPU/Docker 部署 导读 本文是 handson m示例工程教程机器学习深度学习上一篇【免费下载】 React Native SVG 使用指南从基础到高级应用下一篇5分钟完成OpenCore EFI配置OpCore Simplify智能工具终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表