Compartir tecnología

[Pytorch] Manejo de errores de migración de paquetes de entorno Conda

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Empaquetado del entorno virtual Anaconda

El experimento se verificó con éxito en esta máquina. Es necesario migrarlo a un equipo de alta gama. Con un solo 4090D, se necesitaron dos horas y media para ejecutar un modelo grande multimodal de 128k para inferir y evaluar un conjunto de datos. Todavía era una tarea pesada y que requería demasiado tiempo. Es necesario entregarlo urgentemente a la máquina 8A100.
Insertar descripción de la imagen aquí

Para migrar el entorno anaconda desde la computadora de origen a la computadora de destino, primero, ambas computadoras deben tener anaconda instalada.

1. Empaquetado ambiental de la computadora fuente.

Utilice la operación rápida de Anaconda

1. Instale la herramienta conda-pack

conda install conda-pack
  • 1

Insertar descripción de la imagen aquí

2. Determinar el entorno

conda env list
  • 1

Insertar descripción de la imagen aquí

Busque el nombre del entorno que desea empaquetar. Por ejemplo, el nombre de mi entorno es VLM.

3. Entorno de embalaje

conda pack -n VLM -o VLM.tar.gz
  • 1

4. Copie el entorno de embalaje a una unidad flash USB.

El entorno de Windows está empaquetado en el directorio actual. Por ejemplo, XX es el nombre de usuario y la ruta es.
C:/Usuarios/XX/VLM.tar.gz
Lo mismo para Linux

2. Migrar el entorno a la computadora de destino.

①Método 1
1. Utilice Anaconda Prompt para crear un nuevo entorno, por ejemplo, el nuevo entorno es py310:

conda create -n py310 python=3.10
  • 1

2. Copie el entorno de empaquetado en la unidad flash USB al directorio de nombre de usuario de la computadora de destino:
C:/Usuarios/XX/Py36.tar.gz
3. Utilice Anaconda Prompt para descomprimir el entorno empaquetado en la nueva ruta del entorno:

tar -zxvf Py36.tar.gz -C E:anaconda3envspy36
  • 1

4. Activa el nuevo entorno

conda activate py310
  • 1

Nota: Si eso falla, prueba el método dos:
②Método 2
1. Busque la carpeta de entorno de la computadora de destino.
La ruta del entorno es la carpeta envs en el directorio donde se encuentra anaconda. Por ejemplo, la mía es: E: anaconda3envs.
2. Copie el entorno de empaquetado en la unidad flash USB a la carpeta del entorno envs.
3. Utilice la línea de comando cmd en la ruta del entorno para crear una nueva carpeta y asígnele el nombre py36:

mkdir py36
  • 1

O crear una nueva carpeta manualmente
4. Utilice la línea de comando cmd para descomprimir el entorno de empaquetado en un nuevo entorno.

tar -zxvf Py36.tar.gz -C ./py36
  • 1

3. Manejo de excepciones

pip install -e. Provoca un error al empaquetar → ignorar.

El error se informa de la siguiente manera

Collecting packages...
CondaPackError: Cannot pack an environment with editable packages
installed (e.g. from `python setup.py develop` or
 `pip install -e`). Editable packages found:

- /home/xxx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Utilice lo siguiente en su lugar

conda pack -n VLM -o VLM.tar.gz --ignore-editable-packages
  • 1

Descomprimir usando

mkdir ~/ananconda/envs/pcdet-tmp
tar -xf pcdet.tar.gz -C ~/ananconda/envs/pcdet-tmp
cd ~/ananconda/envs/pcdet-tmp
source ./bin/activate
  • 1
  • 2
  • 3
  • 4

Los archivos administrados se han eliminado o sobrescrito → comprimidos en tar

CondaPackError:  
	Files managed by conda were found to have been deleted/overwritten in the following packages: 
		 - charset-normalizer 2.0.4:
		 - xxxx
This is usually due to `pip` uninstalling or clobbering conda managed files,
resulting in an inconsistent environment. Please check your environment for
conda/pip conflicts using `conda list`, and fix the environment by ensuring
only one version of each package is installed (conda preferred).
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

La solución fue intentar utilizar las ventajas de WSL para empaquetar el entorno env en anaconda directamente en Windows. Sin embargo, se informó una gran cantidad de errores de dependencia y de nombres.
Insertar descripción de la imagen aquí
Finalmente, me di por vencido y probé el empaquetado y la compresión en el sistema Linux.
En Linux, puede utilizar el comando tar para comprimir un archivo o carpeta en formato .tar.gz.
tar es un comando utilizado para empaquetar archivos.
-c significa crear un nuevo archivo comprimido.
-z significa usar compresión gzip.
-v indica que se debe mostrar información detallada al archivar.
-f va seguido del nombre del archivo comprimido.

Por ejemplo, si desea comprimir la carpeta denominada VLM en env en anaconda, puede usar el siguiente comando:

tar -czvf VLM.tar.gz VLM
  • 1

Aviso

在Linux里去看位置,anaconda是不显示完整文件目录的,会直接不显示有env文件夹,但是可以直接cd 进env去看
  • 1

Insertar descripción de la imagen aquí

Si desea comprimir un solo archivo, como myfile.txt, puede usar:

tar -czvf myfile.tar.gz myfile.txt
  • 1

Estos comandos crearán un archivo .tar.gz en el directorio actual. Puede cambiar la ruta del archivo o especificar el directorio de salida si es necesario.
Insertar descripción de la imagen aquí
Compresión exitosa

Reactivar el medio ambiente

3. Paso 3: Activa el entorno
Para compresión de alquitrán, ejecución de descompresión.

tar -xzvf VLM.tar.gz
  • 1

Si el .zip se copia a otro sistema y se extrae al directorio /xxxx/anaconda/envs/, es

unzip -d /xxxx/anaconda/envs/  pyenv.zip
  • 1

¡Aviso!El entorno virtual empaquetado registra el entorno de origen. La ruta de instalación de anaconda en el nuevo sistema puede ser diferente del entorno de origen. Por ejemplo, el entorno de origen es /xxxx/anaconda2023/ y el nuevo sistema es /xxxx/anaconda/. En este caso, primero debe crear un directorio vacío en el nuevo sistema que sea el mismo que la ruta de instalación de Anaconda del entorno de origen, como la ruta original wsl.localhostUbuntuhometestanaconda3envsVLM.
mkdir /xxxx/anaconda3/envs/
Luego crea un enlace suave
ln -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
Apunte el directorio vacío a la ruta real de la anaconda
Luego active la fuente del entorno active /xxxx/anaconda/envs/VLM

¡Espero que se pueda completar sin problemas!

Bueno, si le resulta útil, no dude en copiarlo. Indique qwq si es difícil de organizar y reimprimir.
Si tiene alguna sugerencia o comentario mejor, ¡agréguelo!
Mi nombre es Qi Yunpeng (Qí Qí) y me esfuerzo por compartir la alegría de los algoritmos con todos.

Una imagen por blog (1/1)↓
Insertar descripción de la imagen aquí

Referencia:
conda-pack migra entornos virtuales
Migración de copia de seguridad del entorno virtual conda del entorno sin conexión: problema del paquete conda