参考PCIC 2021: Causal Inference and Recommendation赛题样例代码 - 知乎,官网还提供了baseline:
点击那个“提交作品”无法进入NAIE平台,就不管了吧。对了,是到 www.hwtelcloud.com/products/mt… 这链接开通服务,不过好像没发现优惠券,先不管了。
继续下面的操作,我们先创建一个git项目仓库,比如competition_PCIC-2021-Causal-Inference-and-Recommendation,然后再git clone到自己的电脑上,我用的是google colab的虚拟机。
好了,然后按照教程创建一个训练文件 train_demo.py
如果用的google colab可以用vscode链接虚拟机实例,可以参考 Running Google Colab with VS code | Simen Eide
下面这个截图就是用vscode连接colab后的效果,效果还是不错的,至少可以在vscode里编程了:
然后按照知乎教程在baseline代码里创建了train_demo.py,把代码拷贝过去即可,把里面的代码注释一下。
在命令行里把数据集解压一下:
cd /content/drive/MyDrive/git/competition_PCIC-2021-Causal-Inference-and-Recommendation/dataset
unzip PCIC2021-track2-baselines.zip -d PCIC2021-track2-baselines
sudo apt-get remove unrar
sudo apt-get install unrar
unrar x "PCIC Track 2 train_validation_dataset.rar" train_validation_dataset/
unrar x test_phase1.rar test_phase1/
下面的截图就是解压完成后的
使用vscode连接colab-ssh
配置colab的conda环境
接下来就是把train_demo.py的代码注释一下
参考下面这个文章安装conda,因为terminal默认是Python2.7,说明jupyter运行在虚拟环境里,所以需要安装虚拟环境 Conda + Google Colab. A guide to installing Conda when using… | by David R. Pugh | Towards Data Science
参考上面这个就完成了colab的conda配置
注释 train_demo.py
代码里用了 naie 这个华为平台的机器学习包,在 pypi.org 没有搜到,其实没事,待会理解了代码可以换成其他的机器学习包就可以了。
搞了半天,还是害怕注释,因为机器学习没学好感觉代码看不懂,其实你只要能运行就可以了。可以边运行边注释理解。
不懂的代码你就是在后面注释不懂,不要停下来,停下来还是不懂。
代码都看不懂,主要是因为是黑盒,看着就感觉不踏实,怎么办?只能把课程再学习一下吧。
看了下李宏毅老师的机器学习1、2节课,对机器学习和深度学习流程。
本地机器运行训练代码
也就是运行 train_demo.py,在colab或者自己电脑上,就是直接 python train_demo.py。
如果用华为的平台,那就变成提交这个训练脚本了,选择引擎也就是选择深度学习软件包。
华为平台提交训练代码
自己改不了代码,还是用华为平台吧。
因为拷贝过来时,代码缩进乱了,所以对照知乎文章PCIC 2021: Causal Inference and Recommendation赛题样例代码 - 知乎把缩进搞下,然后就提交到华为平台训练出结果,本来还想着注释好了改成自己的代码然后在本地电脑/colab运行的。
被华为这个平台的流程搞晕了,不过试了下,大概知道流程了。
订阅模型训练服务、数据集服务
可以看到模型和训练任务都在提交的范围里,这么说的话其实这个平台没有terminal这些界面,主要就是Notebook这一个接口了。
NAIE这个就是NAIE的控制台了。
创建项目、数据订阅、新建模型训练工程
进入模型训练服务控制台界面,在这里“新建模型训练工程”
在NAIE训练平台创建项目,创建项目之后在数据集页面点“数据订阅”订阅数据集:
然后进入“模型训练”页面“新建模型训练工程”,选择WebIDE,创建一个WebIDE大概需要3-5分钟:
编辑训练任务文件train_demo.py
编辑代码如下:
配置训练工程
开始训练
上面训练任务配置页面最底下点击开始训练就跳到了训练工程页面了:

训练失败了,查看打印信息:

找到了错误,修改了,然后重新训练,重新训练的操作步骤如下图所示:
结果又报错了:
然后在重新训练,训练时看不到cpu、gpu、ram变化,估计又要错了:
果然又错了,这个查看错误的方式真很麻烦,因为很多都是代码编辑问题:
可能是缩进问题,因为从知乎拷贝过来缩进有问题,都统一用4个空格表示tab吧,所以又手工把缩进都调整了下。
这个问题还是比较大的,因为Python要求缩进严格一致,不能多一个或者少一个空格的。
经过多次缩进问题处理,最后训练完成了,但是没有找到/cache/submit.csv,这个文件训练时临时存在的,然后被拷贝到了云存储器:
s3://bucket-kak0h2bo/72e24879924c4d45be34a6c1f86f6e29/02adc51b92ca4fa59f7c0af851041fea/Job/algo-train_demo/train_demo-74302/output/submit.csv

mox.file.copy('/cache/submit.csv', '/home/ma-user/work/Algorithm/algo-train_demo', 'submit.csv')) 无效
通过上面这个代码把submit.csv拷贝一份到训练工程的目录下
os.system('cp /cache/submit.csv ./submit.csv') 好像也无效,没有找到文件
np.savetxt("/home/ma-user/work/Algorithm/algo-train_demo/submit.csv", submit, fmt = ('%d','%d','%f')) 奇怪,显示没有这个路径,难道代码编辑的虚拟环境和训练环境不是同一个机器?
提交训练结果
上面训练完成后,根据结果保存代码,可以看到输出文件的全路径是 /cache/submit.csv,那也就是把这个csv文件提交到平台上,然后平台再计算准确率,定时发布排名。
训练集没有提供标签,所以分数需要提交后才能计算出来。
小结
这样就完成了,可以运行的train_demo.py代码在 gist.github.com/eatcosmos/c…
changelog
-
2021年06月24日 流程走通了,写的比较乱,后面再整理吧
-
2021年06月23日 拖延了