2020.05.27
Note1
将训练数据导入notebook
由于notebook上的rarfile
有点问题,没法直接解压rar文件,所以我将rar文件在电脑上解压再压缩为zip,然后放到OBS上,从OBS里拷贝到notebook再解压。
1 | import moxing as mox |
2020.05.28
Note2
由于最近几天付费版的32G CPU服务器因为华为云资源不足一直没法成功启动,笔记本电脑又只有8G内存,没法完全加载数据进行数据观察,所以我准备采用体验版的64G GPU服务器来做数据观察,因为免费版服务器云硬盘只有5G,也没法把压缩包加压出来以后再读取csv,于是干脆直接解压到内存中进行读取:
1 | from zipfile import ZipFile |
要完全读取整个csv文件需要加载247秒😓。
Note3
pandas分块读取csv文件:
1 | df=pd.read_csv(f,header=None,chunksize=10000) |
参考资料:pandas分批读取大数据集
2020.06.02
Note4
在华为云notebook上跑大佬分享的baseline时遇到报错:
1 | TypeError: aggregate() missing 1 required positional argument: 'func_or_funcs' |
问题出在这句代码:
1 | group_df = df.groupby('loadingOrder')['timestamp'].agg(mmax='max', count='count', mmin='min').reset_index() |
修改为:
1 | group_df = df.groupby('loadingOrder')['timestamp'].agg({"mmax":'max', "count":'count', "mmin":'min'}).reset_index() |
报错原因应该是和大佬的pandas版本不匹配。
Note5
在华为云notebook上运行大佬的baseline后,将预测结果下载提交,结果线上成绩为:999999999.0000。经华为官方排查以后,发现是换行符的问题。Linux服务器上的输出结果换行符为LF
,而华为云评分系统要求文件换行符为CR LF
,使用notepad++将换行符修改一下再提交即可获得正确结果。华为后期会调整评测系统的兼容性。
2020.06.03
Note6
服务器配置相关命令。
启动Jupyter NoteBook:
1 | nohup jupyter notebook --no-browser --ip=* --port=8888 & |
查看正在运行的Jupyter NoteBook:
1 | jupyter notebook list |
查看进程号:
1 | ps -aux | grep jupyter |
杀死进程:
1 | kill -9 xxx |
解压zip压缩包:
压缩服务器上当前目录的内容为xxx.zip文件
1 | zip -r xxx.zip ./* |
解压zip文件到当前目录
1 | unzip filename.zip |
参考资料:Linux下的压缩zip,解压缩unzip命令详解及实例
Note7
在服务器上执行命令conda activate BDC
出现报错:
1 | CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. |
解决方案为:
1 | echo ". /home/B11/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc |
Note8
要在部署在服务器上的Jupyter NoteBook中切换到别的anaconda虚拟环境,需要在该环境下安装ipykernel
:
1 | pip install ipykernel |
然后将环境写入notebook的kernel中
1 | python -m ipykernel install --user --name 环境名称 --display-name "环境名称" |
查看安装的内核和位置:
1 | jupyter kernelspec list |
移除内核:
1 | jupyter kernelspec remove [内核名字] |
参考资料:
Note9
在服务器上安装完lightgbm,然后在notebook上运行baseline的时候遇到报错:
1 | OSError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by lightgbm) |
主要原因是因为系统缺失lightgbm所需要的GLIBC_2.14
,通过以下命令可以查看当前系统的glibc版本:
1 | $ strings /lib64/libc.so.6 |grep GLIBC |
发现系统最新只有2.12版本,所以我们要手动安装2.14版本,具体操作参考这篇博客,
安装好以后再次查看系统的glibc版本:
1 | $ strings /lib64/libc.so.6 |grep GLIBC |
2.14版本已经安装成功。重启notebook运行代码,在导入lightgbm的时候又发生新的报错:
1 | OSError: dlopen: cannot load any more object with static TLS |
通过查阅资料,发现在导致该错误的原因较为复杂,可能是因为导包顺序,也有因为是glibc版本还需要继续升级。
经过大量调试,发现在命令行环境中可以正常导包,但是在notebook中就不行。后来发现在base环境下安装lightgbm是能正常在notebook导入的,可能是之前的环境出了问题,于是删除出问题的环境,重新新建一个新的虚拟环境,再次安装lightgbm,在notebook中成功运行。
2020.06.05
Note10
pandas去除重复行:
1 | data.drop_duplicates(subset=['A','B'],keep='first',inplace=True) |
参考资料:pandas 去重 drop_duplicates 函数
2020.06.07
Note11
今天尝试使用xgb进行训练,结果发生报错:
libgomp.so.1:version ‘GOMP_4.0’ not fount
问题发生的原因是动态库的版本不够,网上有很多种解决方案,有的要安装高版本gcc,我尝试以后也没有成功,可能是安装的版本还不够高。后来发现在另一个环境的动态库中就有我需要的,于是直接拷贝过来使用就行了。
参考资料:https://blog.csdn.net/dcrmg/article/details/78358279
2020.06.16
Note12
这几天服务器的硬盘空间被耗尽了,但是删除文件以后空间却不见,同时在jupyter notebook下删除文件还显示硬盘空间不够用。这就奇怪了,删除个文件还要占用硬盘空间,难道是有回收站?一查资料果真是这样,在jupyter notebook下删除文件会被放到回收站,回收站路径是:
1 | /home/{username}/.local/share/Trash/files/ |
进入文件夹一看,竟然有160G的垃圾,以后还是老老实实的rm
吧…
参考资料:linux下使用jupyter notebook删除文件遇到的坑
2020.06.17
Note13
使用pyecharts绘制GPS轨迹图:
1 | import pandas as pd |
Note14
在控制台中输出实现进度加载的效果,每次清除上一次输出的一行内容。
1 |
|
参考资料:Python控制台输出时刷新当前行内容而不是输出新行
2020.06.21
Note15
使用pandas.DataFrame.sample随机抽样函数打乱数据顺序:
1 | df=df.sample(frac=1) |
参考资料:pandas.DataFrame.sample随机抽样
2020.07.10
Note16
Jupyter Notebook今天运行的时候打不开.ipynb
文件,报错500:Internet Server Error
。Jupyter Notebook经过重启之后依然是同样的错误,查看日志文件,发现系统报错AttributeError: module 'tornado.web' has no attribute 'asynchronous'
。经排查发现是队友在环境下装了一个包,导致tornado
被升级到6.0.4
版本,与Jupyter Notebook所需版本不一致导致的报错。
因为高版本是用pip
安装的,原低版本是conda
默认安装的,使用pip
将高版本的tornado
卸载后原低版本还在。再次启动Jupyter Notebook,结果显示找不到tornado
。后来检查发现base环境下有很多pip安装的重复的包,包括Jupyter Notebook也被pip重复安装了一个高版本的,尝试将所有pip安装的包都卸载以后,运行程序显示找不到Jupyter Notebook,但是原来conda
默认安装的包都还在环境里。
本打算重新安装一遍Jupyter Notebook,或者单独创建一个新环境来安装,但是运行安装命令网络一直超时连不上。后来发现其他几个环境下当初为了将该环境引入kernel列表也都安装了一套完整的Jupyter Notebook,这些Jupyter Notebook都可以正常运行,所以最后使用dataprocess环境下的Jupyter Notebook服务器代替原来的进行使用。
2020.07.13
Note17
在华为云NoteBook中使用pip
安装matplotlib
,然后导入时遇到报错:ImportError: cannot import name 'rcParams'
解决方案为在导入前添加一句:
1 | from pylab import rcParams |
参考资料:https://stackoverflow.com/questions/59936356/importerror-cannot-import-name-rcparams-from-matplotlib
2020.07.14
Note18
由于GPU服务器是在是太贵了,我现在处理也用不上GPU,只是需要较大的内存而已,所以在数据清理初期结束以后后面的工作可以转移到CPU服务器上进行。写了一些小脚本用以文件同步:
文件上传
1 | import moxing as mox |
文件下载
1 | import moxing as mox |
参考资料:https://support.huaweicloud.com/moxing-devg-modelarts/modelarts_11_0005.html