singularity实践
singularity实践(x86)
创建一个包含Miniconda环境的Docker镜像,并将其转换为Singularity镜像以在高性能计算(HPC)环境中使用,是一个实用的方案,尤其适合需要确保科研环境一致性和可复现性的场景。以下是详细的步骤:
1:创建并配置Docker镜像
1.1 启动基本的Ubuntu Docker容器
docker run -it --name my_conda_env ubuntu:latest /bin/bash
1.2 安装Miniconda
在容器内,下载并安装Miniconda。请注意,Miniconda的版本可能会更新,请访问Miniconda的官方网站获取最新的安装链接。
apt-get update && apt-get install -y wget
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b
export PATH=/root/miniconda3/bin:$PATH
1.3 创建并配置Conda环境
创建一个新的Conda环境,并安装您需要的包。以创建一个名为myenv
的环境并安装numpy
为例:
conda create -n myenv numpy -y
激活环境并进行任何额外配置:
conda activate myenv
# 在这里进行任何额外的环境配置
1.4 退出并保存Docker镜像
配置完成后,退出容器:
exit
从您的容器创建一个新的Docker镜像:
docker commit my_conda_env my_conda_env_image:latest
1.5 导出Docker镜像
docker save -o my_conda_env_image.tar my_conda_env_image:latest
2:将Docker镜像转换为Singularity镜像
确保您的系统已安装Singularity,并执行以下命令:
singularity build my_conda_env_image.sif docker-archive://my_conda_env_image.tar
singularity build singularity_llama_factory_test.sif docker-archive://singularity_llama_factory.tar
3:在HPC环境中使用Singularity镜像
3.1 运行Singularity容器
在HPC环境中,加载Singularity模块(如果需要)并运行您的Singularity镜像:
module load singularity
singularity shell my_conda_env_image.sif
3.2 激活Conda环境
Singularity容器内,您需要重新初始化Conda环境。这是因为Conda的初始化脚本默认不会在非交互式Shell中运行。
. /miniconda3/etc/profile.d/conda.sh
conda activate myenv
3.3 运行您的模型
在激活的Conda环境中,您现在可以运行您的大型模型或任何其他需要的命令。
注意事项
- 在创建Docker镜像时,确保包含了所有必要的依赖项和配置,以确保您的环境能够在HPC上无缝运行。
- 由于HPC环境的特殊性,可能需要进行特定的优化,比如使用特定的库或调整环境设置以适应高性能计算的需求。
- 遵守您所在机构关于使用容器和HPC资源的规定和最佳实践。
这个方案将帮助您创建一个包含Miniconda环境的Docker镜像,将其转换为Singularity镜像,并在HPC环境中使用该环境运行大型模型。
m2芯片singularity实践
在使用搭载M2芯片(基于ARM架构)的Mac时,如果你想通过Docker拉取一个针对x86_64架构(有时也称为amd64架构)的Ubuntu镜像,你可以使用--platform
选项来指定目标平台。这个功能允许你拉取与你的物理硬件架构不同的镜像。请确保你的Docker版本支持这个选项。
以下是如何拉取x86_64架构的Ubuntu镜像的命令:
docker pull --platform linux/amd64 ubuntu:latest
这条命令告诉Docker尝试拉取适用于x86_64架构的ubuntu:latest
镜像,即使你正在使用基于ARM架构的Mac。
注意事项
- Docker版本:确保你的Docker Desktop版本是最新的,以便支持
--platform
参数。 - 性能和兼容性:在ARM架构的机器上运行x86_64架构的容器可能会通过模拟来实现,这可能会影响性能。此外,并非所有软件都能在模拟环境中完美运行,可能会遇到兼容性问题。
- 使用场景:此方法特别适用于需要确保开发和测试环境与生产环境(可能是x86_64架构的服务器)一致的情况。
通过使用--platform
选项,你可以在搭载M2芯片的Mac上更灵活地使用Docker,包括开发和测试针对不同硬件架构的应用。
检查Ubuntu的架构
arch
其他与x86的最佳实践相同