《AI开发者的docker实践》之docker&大赛

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本篇介绍docker大赛技巧以及常见问题集。

一、docker 大赛技巧

本地调试可以切一部分训练集做测试集通过docker -v /drta_dir:/tcdata 模拟线上环境进行测试,一般本地成功运行线上都能通过。线上运行与本地运行的区别点:

1.本地有网络,线上无网络

2.本地内存大小、存储大小、显存大小如果大于线上配置,则需要注意资源使用不要超过线上配置

如docker 本地测试运行时可通过-m参数限制内存使用大小

docker run -m1024 registry.cn-shanghai.aliyuncs.com/xxxx/test:0.1 sh run.sh

3.线下驱动版本高于线上nvidia驱动版本,可能对应的cuda在线上不能支持

可参见Nvidia官网的驱动版本与cuda的对照表


4.遇到异常情况自己要完整跟一遍状态变化,关注是在那个环节出现问题,向官方求助时需说明状态变化及错误信息,并附带该次提交的日志链接,如果还在运行的,可提供历史日志链接。日志链接非常重要,用于快速查询你的队伍信息。


二、天池大赛下限制条件/注意事项/常见问题集

1.运行时间/效率:

概念解释:

costtime:(单位ms)与选手运行时间无关,无需关注,这个时间是系统读取选手预测结果并计算成绩耗费的时间。

运行时间计算方式为(选手镜像运行结束变为terminal时刻)-(选手镜像变为running时刻)-(系统评测占用时间costtime)

2.超时时间:

超时时间分为三个维度,一般大赛仅涉及两个维度(严重超时:从镜像提交到选手代码运行结束过程中时间超过官方规定的超时时间+30min到60min,视为程序严重超时/程序死机,此时会启动资源回收机制强制kill选手进程; 超时:从选手代码开始运行到结束运行时间超过官方规定的超时时间,则视为选手程序效率不符合赛题要求,成绩会被置为无效,运行时间超过“超时时间”但未超过“严重超时时间”会正常运行结束并可在日志页看到成绩,以供调整参考);第三个超时维度为细粒度的infer效率控制,对于工业等流水线业务对实时性要求高的赛题可能会设置“单次infer”超时时间,测试数据以流的形式依此喂给选手模型,模型“从收到单例数据到infer返回结果”时间需满足官方规定,超时则成绩无效。

3.日志异常

a.cant connect tianchi.aliyun.com (已知偶现bug跟随某台ecs存在,此时由于网络不可达且未代码运行,并不会扣除提交次数,可直接再次提交,并告知官方出现的问题及对应日志链接)

4.长时间init

init一般为初始化状态,如果刚提交后出现init为正常现象,有时init很快变为watiing有时则需很久(不超过30min),这是因为机器库存在根据大家提交量动态变化,提交量突增时机器库存不足则会触发自动购买添加动作,该动作可能会耗费较长时间 但不会超过30分钟,如果超过30分钟则不正常。

5.长时间creating

如果状态一直停留在creating,且展开状态栏的reason 显示imgbackoff,此时证明你的镜像在拉取时出现错误,可能镜像链接有误或者账号密码不对。

这里需要注意,每次修改镜像链接,包括仅修改版本号,都需要重新填写账号密码

6.代码规范

为了方便代码审核,除特殊说明的大赛外,养成如下格式习惯:

/workspace #存放选手代码的目录,需要在dockerfile中设置此目录为WORKDIR(官方镜像会逐渐整改,全部默认设置为/workspace )。此目录下需包含且仅包含大赛的完整代码

7.代码审核

代码审核没有特殊说明的大赛默认取的是(规定时间内)排行榜最优成绩那次提交对应的备份镜像进行审核。如果最优成绩对应镜像不符合审核要求(如不包含官方要求的完整代码)则会直接淘汰。如果出现前期仅提交预测代码得到的最优成绩在最后几天提交完整代码时无法复现出来,可以在官方群联系赛题组取消无法复现的最优成绩。

8.遇见问题如何提问?

遇到问题,不要仅描述问题,同时需附带日志链接和大赛名称。组委会优先处理信息完整的提问。

9.设置账号密码时提示验证通过,并非账号密码正确。

镜像仓库服务和提交运行服务(tcc)是独立的两套系统,此时验证的仅仅是镜像链接格式无误,不会验证账号密码。

10.运行过程中主动结束

遇到想要主动结束运行的情况时可通过直接覆盖提交实现运行新的提交,或提交一个错误链接终止掉正在运行的程序。

11.提交次数计数逻辑

提交次数的扣除仅以“状态进入running”为唯一标准,如果镜像提交错误或还未变成running就覆盖提交都不会扣除提交次数。

12.实时日志

有些训练/预测时间特别久的比赛,如淘宝直播大赛视频类型竞赛,查看实时日志对选手而言非常重要,所以运行时间较长的比赛会开放实时日志,用于及早发现问题。通过点击实时日志框右上角刷新按钮更新最新日志(实时日志有大小限制,如果打印过多内容,历史日志会被实时截断,优先显示最新日志)

三、其他技巧

docker共享主机屏幕,实现可视化

算法同学不同于应用开发,经常在本地调试过程中需要可视化一些内容,如plot或者查看数据集里的一张图片等,而docker自身并不支持这些能力,但是你可以把本机的屏幕挂给容器(/tmp/.X11-unix),这样在容器内执行plot时,画面会在本机桌面上直接显示,sample:(需要注意,如果你不是在本地运行,宿主机并没有屏幕可以共享给容器,此时想要可视化会比较麻烦,可通过ai-hub包绑定微信进行显示,详见https://github.com/gaoxiaos/AI_HUB

docker run --gpus all -it-v /tmp/.X11-unix:/tmp/.X11-unix registry.cn-shanghai.aliyuncs.com/tcc-public/super-mario-ppo:localdisplay  /bin/bash
docker容器后台运行

一些提供服务类的镜像,一般需要放在后台一直运行。或者在本地运行长时间任务(训练模型)的镜像,希望运行结束容器不销毁。

docker提供了-d选项 保持容器在后台

docker run -d xserver:latest
两个docker容器绑定通信(一般用与分离的服务端和客户端)

当你有时需要一个固定的服务时,不妨把服务端单独拎出来作为后台容器一直存在,专注开发客户端代码,每次运行时通过(--link)绑定服务端容器,sample:

docker run -itd--link display:xserver client:latest /bin/bash
容器中文件读写权限问题

由于docker镜像一般都精简掉了非必要模块,所以不支持sudo权限,那么遇到目录写权限报错时该怎么做呢

1.一般工作目录下都是读写全开的,最简单就是写在有权限的目录

2.一定要写在该目录,可在dockerfile中  chmod对应权限 777是最高权限,你可以相应调整

RUN chmod777 /your_dir

3.同理,不想在dockerfile中执行的话 ,直接修改基础镜像在基础镜像中对指定目录执行chmod后作为新的基础镜像也可。

海外同学上传镜像慢的建议方案

由于大赛的计算节点一般都在中国的上海或深圳,所以当镜像较大时海外选手上传镜像到国内会非常慢,尽管有些大赛开通了海外专线,但是速度还是比较受限。

因此建议海外同学可以使用阿里云镜像服务(ACR)的自动构建(镜像)功能,步骤如下:

a.使用github等托管自己的代码(推荐code.aliyun.com)

b.在acr(阿里云容器服务)产品页做代码源绑定,并开启自动构建

image.png

创建镜像仓库

2

代码源

仓库信息

代码源

本地仓库

私有GitLab

云Code

GitHub

Bitbucket

阿里云代码管理实现了私有并且安全的代码托管服务,提供目前最流行的

分布式版本控制系统Git来有效管理您的项目.

绑定账号

构建设置

代码变更自动构建镜像

海外机器构建

不使用缓存

构建规则设置

请在仓库创建完成后前往构建页面设置

上一步

取消

创建镜像仓库

c.构建完成设置hook自动提交(警惕次数消耗),或者谨慎起见构建完成后手动提交。

触发器设置方法:https://help.aliyun.com/document_detail/60949.html?spm=5176.8351553.0.dexternal.7f231991sUvASL


容器中使用plot 可视化图表,或者可视化数据集中的图片等数据

由于容器无显示设备,因此需要绑定宿主机的显示设备用来可视化,Linux下可通过3.1节其他技巧的共享宿主机屏幕实现:

docker run -it-v /tmp/.X11-unix:/tmp/.X11-unix registry.cn-shanghai.aliyuncs.com/tcc-public/super-mario-ppo:localdisplay  /bin/bash

如果宿主机也没有显示设备,则需考虑把图片等保存下来传送到本地查看,这个流程比较复杂,这里推荐大家使用ai-hub的plot函数或命令行,直接会把图像发送至绑定的微信账号查看,详情查看(公共号能力尚未开通,可先关注,后续在公众号通知)https://github.com/gaoxiaos/AI_HUB


容器中做耗时任务(如训练模型)消息触达(通知)

消息触达模块可使用AI-HUB中的Notice模块,目前公众号尚未开通消息能力,可先关注公众号,后续更新会在公众号中通知。

https://github.com/gaoxiaos/AI_HUB

四、常见问题

1.天池大赛出现长时间waiting,展开状态栏reason显示imagebackoff

imgbackoff一般是因为账号名密码或链接错误导致拉去镜像失败出现的错误。请重新填写链接、账号密码提交,此时不会扣提交次数。

tips:填写账号密码时,点确认按钮时提交验证通过,仅仅是验证url的合法性,并未进行账号密码验证,所以验证通过不代表账号密码正确。


2.本地出现一些镜像

镜像出现的原因是旧的镜像名被新的占用,导致旧的镜像变成了,比如你build新的镜像时指定了就镜像相同的镜像名:版本号

删除镜像可使用:

docker image prune


3.天池大赛日志为空,仅提示网络错误

此时可能遇到了bad节点,虽然机率较小,但是k8s社区仍然会有类似bug,遇到时可重新提交即可,此时不会扣除提交次数。


4.镜像没有读写权限怎么办

点击下方课程链接即可直达镜像没有读写权限怎么办视频教程。

https://tianchi.aliyun.com/course/351/4130

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
1月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
376 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
1月前
|
消息中间件 人工智能 Kafka
AI 时代的数据通道:云消息队列 Kafka 的演进与实践
云消息队列 Kafka 版通过在架构创新、性能优化与生态融合等方面的突破性进展,为企业构建实时数据驱动的应用提供了坚实支撑,持续赋能客户业务创新。
333 30
|
1月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
1月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
1月前
|
人工智能 新制造
TsingtaoAI受邀参加宁波AI海曙科创训练营并分享技术落地实践
10月12日至15日,由宁波市海曙区组织部主办的AI海曙科创训练营在宁波成功举办。作为受邀企业代表,TsingtaoAI团队深入参与了多项活动,与政府领导、行业专家及科创企业代表围绕AI技术在制造业、成果转化等领域的实际应用展开交流,用真实案例诠释了“技术扎根产业”的价值逻辑。
85 2
|
1月前
|
人工智能 搜索推荐 算法
用AI提示词搞定基金定投:技术人的理财工具实践
本文将AI提示词工程应用于基金定投,为技术人打造一套系统化、可执行的理财方案。通过结构化指令,AI可生成个性化定投策略,覆盖目标设定、资产配置、风险控制与动态调整,帮助用户降低决策门槛,规避情绪干扰,实现科学理财。
483 13
|
1月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
1月前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
893 90
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
|
1月前
|
人工智能 运维 关系型数据库
云栖大会|AI时代的数据库变革升级与实践:Data+AI驱动企业智能新范式
2025云栖大会“AI时代的数据库变革”专场,阿里云瑶池联合B站、小鹏、NVIDIA等分享Data+AI融合实践,发布PolarDB湖库一体化、ApsaraDB Agent等创新成果,全面展现数据库在多模态、智能体、具身智能等场景的技术演进与落地。
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
351 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践