大家好,我是【CDDA天下第一】队的队长【向瑶函】(整个团队只有我一个人……),最近在参加【英特尔“创新大师杯”全球AI极客挑战赛】,比赛的第一步就是我们需要通过指定Docker镜像编译DeepRec产生一个wheel包,这里面就包含了比赛用到的模型,相当于这是一个针对预训练模型的性能优化大赛,不过可能是因为本人文科专科出身,技术实力不够,在编译过程中踩了很多坑。
最后多嘴一句,初赛早在10月8日就结束了,我把征文的截止时间10月14日跟初赛结束时间搞混淆了,而我是想着趁DeadLine一波发力的……所以说拖延是种病,得治。
一、windows不能通过Docker Desktop编译
一句话介绍这条:不行,最好通过Vmware装Linux系统,并且Docker Desktop和虚拟机是冲突的,记得用管理员权限打开CMD之后输入bcdedit /set hypervisorlaunchtype off
。
比赛官方视频里面已经提到了最好是“英特尔平台的linux系统下编译”,我一开始是想着通过Win10开启Hyper-V来使用Docker Desktop来实现编译,但发现中间有个操作是要“在官方给的镜像中运行DeepRec的代码”。
官方镜像在Docker中的下载倒是不困难,难的是怎样将DeepRec的代码送到通过Docker Desktop中的镜像中去。
一开始想的是直接在官方给的镜像中安装git,但发现安装之后想要clone指定仓库的时候反反复复提示
fatal: unable to access 'https://github.com/alibaba/DeepRec.git/': Failed to……
用网上各种改“https://”为“git@”、重置代理端口的方法都不行。
后面又尝试通过指令docker cp /路径/文件名 容器ID:/上传路径
想把windows上的文件传入到Docker镜像里面,但因为Docker Desktop本来就是虚拟机,本地文件只是一个VHDX的虚拟磁盘,根本传不进去。
我相信大佬们应该是有其他办法解决这个问题的,但我是真的尽力了,不得已去装一个Ubuntu 20.04的虚拟机。
二、没有改官方代码的目录导致名称占用
这次比赛,官方很贴心的给了一个编译的新手教程。
但我直到很后面才意识到红框里面的是伪代码,是要我们改成自己的位置才行,导致我直接复制运行的时候显示“文件夹your_code只有读取权限”。
但其实这个时候容器名“tianchi”已经在这次失败的创建中被占用了,而我又忘记清除,导致每次使用官方代码的时候没法创建容器还导致容器名被占用,直到看了视频才发现问题。
如上图所示,老师是将官方给到的伪代码中的相对地址改成了自己的目录的,不过好在官方编译教程的所有代码除了这一行要改,其他的都可以直接复制过来用。
三、因不明原因导致configure能查找到,但是无法使用
这个问题我一直都没有解决,后面是通过重装了一个ubuntu 18.04的虚拟机,跟镜像机保持一致的版本,然后重新走了一遍全过程才解决的问题。
如上图所示,我要执行configure这个Shell文件,明明通过ls能查看到,cat也能访问并且给出的内容和该文件的内容是完全一样的,并且我后面还通过chmod改了文件权限,文件名后面也没有空格,find也能够查到,我后面甚至使用了模糊匹配……
基本上我能想到的能问到的方法都试过了,但这个文件就是死活显示“找不到”。
我现在唯一怀疑的原因就是因为我的DeepRec并不是跟老师视频中演示的一样,我的是通过docker cp /路径/文件名 容器ID:/上传路径
从虚拟机复制到镜像里面去的,但问题是同名文件包括configure.py和configure.cmd都是能够运行的(虽然两个单独运行都是报错),唯有这个名为configure的Shell文件死活提示“找不到”。
以上就是我遇到的3个卡我比较久的问题,可能有大佬会觉得这些问题太基础了,我卡住就是我技术太菜了,这点我不否认,但我觉得这个比赛的目的就是为了推广DeepRec,任何一个稀疏大模型走向大众化或多或少都会有新鲜血液加入的,我们不应该抱着居高临下的态度去看待他们,像我这种完全面向小白的避坑贴也许会成为他们放弃之前最后抓住的希望。
鸡汤了一把,最后,恭喜一下41支队伍进入到复赛,也希望大家以后不要像我一样搞错比赛的时间。