跳到主要内容

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的最佳实践相同