上智院第三界世界科学智能大赛-新能源复赛提交docker经验

笔者也是第一次参加比赛,docker不熟练,这次顺利提交了,给大家分享下提交经验!

1. docker 环境下载安装构建上传

参考天池大赛的步骤:天池大赛从0开始docker提交_天池技术圈-阿里云天池

第一、二步跟着天池教程操作。

第三步我们参考官方给的镜像打包程序。

1.1 修改Dockerfile

# 原始加载镜像
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.12-py3.9.12-cuda11.3.1-u20.04

# 新的加载镜像
FROM sais-public-registry.cn-shanghai.cr.aliyuncs.com/sais-public/pytorch:2.0.0-py3.9.12-cuda11.8.0-u22.04

1.2 构建镜像并上传

# 构建镜像
bash build.sh

# 以下命令为示例,实际使用时请修改为自己的镜像地址
# push镜像
docker push registry.cn-shanghai.aliyuncs.com/xxxx/test:0.1

注:我首次提交时`bash build.sh` 出错了,具体错误忘了记录,大概意思是docker构建方法太旧,使用如下方法解决,供参考。

docker buildx install

sudo apt-get install docker-buildx

2. 数据加载

因容器系统特殊,直接用xr读取nc数据可能存在文件锁定问题导致报错NetCDF: HDF error

官方没有给出完整代码,可能也是在考察选手的代码处理能力,下面的代码供参考。

# 原数据加载方式
from netCDF4 import Dataset
with Dataset(file_path, mode='r') as ds:
    data = ds.variables["data"][:].astype(np.float32)[0]


# 新数据加载方式
import xarray as xr
import os
os.environ["HDF5_USE_FILE_LOCKING"] = "FALSE"

ds = xr.open_mfdataset(
    paths=file_path,  
    engine='h5netcdf', 
    parallel=True
)
data = ds.variables["data"][:].astype(np.float32)[0]

# 附 路径地址
# 训练集特征
/saisdata/train/POWER_TRAIN_ENV/1/NWP_1/20240101.nc
# 训练集标签
/saisdata/train/power_train/1_normalization_train.csv
# 测试集特征
/saisdata/test/POWER_TEST_ENV/1/NWP_1/20250101.nc

3. torch 、 CUDA、dask、h5netcdf问题

问题1:使用GPU报如下错误,缺少了一些文件

Could not load library libcudnn_cnn_infer.so.8. Error: libnvrtc.so: cannot open shared object file: No such file or directory
run.sh: line 5:    19 Aborted

参考解决方法:docker中下载下面的文件,可直接参考最后的完整Dockerfile

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb

dpkg -i cuda-keyring_1.1-1_all.deb

apt-get update && \
apt-get install -y --no-install-recommends \
cuda-toolkit-12-4 && \
apt-get clean && \

rm -rf /var/lib/apt/lists/*

问题2:缺少dask、h5netcdf包

ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable.

ValueError: unrecognized engine 'h5netcdf' must be one of your download engines: ['scipy', 'store'].

参考解决方法:安装缺少的dask包,可直接参考最后的完整Dockerfile

pip3 install dask h5netcdf --index-url=http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

以下完整Dockerfile供参考

FROM sais-public-registry.cn-shanghai.cr.aliyuncs.com/sais-public/pytorch:2.0.0-py3.9.12-cuda11.8.0-u22.04


# 如有安装其他软件的需求
#RUN apt-get update && apt-get install curl
RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
RUN dpkg -i cuda-keyring_1.1-1_all.deb
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        cuda-toolkit-12-4 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 如果安装其他python包的情况
RUN pip3 install numpy pandas scikit-learn xarray dask h5netcdf --index-url=http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

# 复制代码到镜像仓库
COPY app /app

# 指定工作目录
WORKDIR /app

# 容器启动运行命令
CMD ["bash", "run.sh"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值