SageMaker 运行自定义环境——以 PaddlePaddle 为例
随着机器学习的场景越来越多样,我们遇到了更多迁自定义运行环境的 SageMaker 场景需求,SageMaker 提供 bring your own container (https://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/your-algorithms-inference-code.html) 的方式提供自定义运行环境,但是对于新手来说,如何构建容器镜像并进行运行测试,最终部署上线都是挑战。本篇以广泛使用的paddlepaddle 为例探讨如何将自定义容器镜像部署在 SageMaker 上。
本次自定义镜像的用户端调用顺序如下:
本次 blog 代码位于https://github.com/zhaoanbei/sagemaker_paddle_nlp_classification_byoc.git 不包括模型文件。
首先,我们开启一个 g4dn.xlarge 的 SageMaker jupyter instance 模拟本地开发环境。https://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/gs-setup-working-env.html。
在 jupyter instance status 变为 InService 之后,点击左上角 “+”, 选择最下边 Others—Terminal
cd SageMaker
git clone https://github.com/zhaoanbei/sagemaker_paddle_nlp_classification_byoc.git
打开 byoc.ipynb
运行 byoc.ipynb 中第一行:
确认 instance 有根用户权限以及 nvidia-docker2 可用。
之后在 terminal 中输入:
在配置文件中增加:
更改 docker image 存放路径。这一步是可选项,避免镜像占用根卷。之后运行:
运行 nvidia-smi 检查 cuda driver 版本,根据https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/docker/linux-docker.html确认registry路径。
这里我们的 cuda 版本是11.0,可以使用 registry.baidubce.com/paddlepaddle/paddle:2.4.1-gpu-cuda11.2-cudnn8.2-trt8.0
之后 Terminal 中运行镜像并建立端口映射:nvidia-docker run --name paddle -p 8080:8080 -it -v $PWD:/paddle registry.baidubce.com/paddlepaddle/paddle:2.4.1-gpu-cuda11.2-cudnn8.2-trt8.0 /bin/bash
进入容器交互模式,
新开一个 terminal, 将脚本和模型复制到/opt/program/
下。
返回容器交互模式,运行:
这时可以看到服务开始运行。回到 byoc.ipynb, 运行:
看到结果输出后,我们回想一下环境部署过程写 Dockerfile:
为了快速在托管镜像仓库服务 push 镜像,我们提供了build_and_push.sh
。只需sh build_and_push.sh <仓库名>
,即可一键 build 并 push。之后通过 SageMaker SDK 定义 model 进行 deploy。为了测试,可以定义instance_type='local_gpu'
来加速测试流程。在运行model.deploy
之后,在 terminal 中输入docker ps
, 可以看到有一个 container 在运行中。
再次运行:
确认结果返回正确后,我们把 instance_type 改为 ‘ml.g4dn.xlarge’ 再次运行。返回 SageMaker 控制台,在推理—终端节点下可以看到在部署到终端节点。
在状态成为 InService 之后,运行:
除了 paddlepaddle 外,其他自定义环境也可以通过同样的流程进行整理,测试与部署。
本篇作者
相关文章
- unittest中使用ddt后生成的测试报告名称如何修改?(如test_api_0修改成test_api_0_titile)
- compose--附带效应、传统项目集成、导航
- Linux下内存空间分配、物理地址与虚拟地址映射
- 利用催眠技巧绕开OpenAI的内容政策限制(仅供研究使用)
- kkFileView优化PDF图片预览增加JPEG2000标准图片支持
- 我想变成光 | 2022 安卓年终总结
- 使用 qemu 运行 linux 5.17
- Appuploader内测版本详解
- 居中对齐的几种方法
- 视频下载利器(一):youtube-dl - 雨月空间站
- 顶流品牌全渠道服务经验加持,欧泰谱以闭环Know–how助力品牌商业绩增长 | 欧泰谱厂商评估
- 怎么找操作系统的镜像
- 推荐技术 | 犀牛鸟精英人才计划课题宣讲会第六场
- 因果推断&计算机网络、体系结构与代码生成 | 犀牛鸟精英人才计划课题宣讲会第七场
- 数字化转型:智慧物业行业落地与应用的突围之路!
- 浓浓书香伴新春,TVP邀你共读7本精选好书!
- 公众号开发-群发图文中插入小程序卡片报错 invalid content hint 的解决
- 每周云安全资讯-2023年第2周
- 大福利 | ISUX十二周年
- ISUX「十二月」行业设计趋势速递