Partage de technologie

[Pytorch] Gestion des erreurs de migration du pack d'environnement Conda

2024-07-12

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

Emballage de l'environnement virtuel Anaconda

L'expérience a été vérifiée avec succès sur cette machine. Elle doit être migrée vers un équipement haut de gamme. Avec un seul 4090D, il a fallu deux heures et demie pour exécuter un grand modèle multimodal de 128 Ko pour l'inférence et l'évaluation sur un ensemble de données. C'était encore trop long et une tâche lourde. Il est urgent de la confier à la machine 8A100.
Insérer la description de l'image ici

Pour migrer l'environnement anaconda de l'ordinateur source vers l'ordinateur cible, anaconda doit d'abord être installé sur les deux ordinateurs.

1. Conditionnement de l'environnement de l'ordinateur source

Utiliser l'opération d'invite Anaconda

1. Installez l'outil conda-pack

conda install conda-pack
  • 1

Insérer la description de l'image ici

2. Déterminer l'environnement

conda env list
  • 1

Insérer la description de l'image ici

Recherchez le nom de l’environnement que vous souhaitez empaqueter. Par exemple, le nom de mon environnement est VLM

3. Environnement d'emballage

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

4. Copiez l'environnement d'emballage sur une clé USB

L'environnement Windows est empaqueté dans le répertoire actuel. Par exemple, XX est le nom d'utilisateur et le chemin est.
C:/Users/XX/VLM.tar.gz
Idem pour Linux

2. Migrez l'environnement vers l'ordinateur cible

①Méthode 1
1. Utilisez Anaconda Prompt pour créer un nouvel environnement, par exemple, le nouvel environnement est py310 :

conda create -n py310 python=3.10
  • 1

2. Copiez l'environnement d'empaquetage de la clé USB dans le répertoire du nom d'utilisateur de l'ordinateur cible :
C:/Users/XX/Py36.tar.gz
3. Utilisez Anaconda Prompt pour décompresser l'environnement packagé vers le nouveau chemin d'environnement :

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

4. Activez le nouvel environnement

conda activate py310
  • 1

Remarque : Si cela échoue, essayez la deuxième méthode :
②Méthode 2
1. Recherchez le dossier d'environnement de l'ordinateur cible
Le chemin de l'environnement est le dossier envs dans le répertoire où se trouve anaconda. Par exemple, le mien est : E:anaconda3envs. Les étapes suivantes sont effectuées sous ce chemin.
2. Copiez l'environnement d'emballage de la clé USB dans le dossier d'environnement envs.
3. Utilisez la ligne de commande cmd dans le chemin de l'environnement pour créer un nouveau dossier et nommez-le py36 :

mkdir py36
  • 1

Ou créez un nouveau dossier manuellement
4. Utilisez la ligne de commande cmd pour décompresser l'environnement d'empaquetage dans un nouvel environnement

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

3. Gestion des exceptions

pip install -e provoque l'échec du pack → ignorer

L'erreur est signalée comme suit

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

Utilisez plutôt ce qui suit

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

Décompressez en utilisant

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

Les fichiers gérés ont été supprimés ou écrasés → compressés dans 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 solution consistait à essayer d'utiliser les avantages de WSL pour empaqueter l'environnement env dans anaconda directement sous Windows. Cependant, un grand nombre d'erreurs de dépendance et d'erreurs de dénomination ont été signalées.
Insérer la description de l'image ici
Finalement, j'ai abandonné et essayé le packaging et la compression sous le système Linux. Est-ce faisable ?
Sous Linux, vous pouvez utiliser la commande tar pour compresser un fichier ou un dossier au format .tar.gz.
tar est une commande utilisée pour empaqueter des fichiers.
-c signifie créer un nouveau fichier d'archive.
-z signifie utiliser la compression gzip.
-v indique d'afficher des informations détaillées lors de l'archivage.
-f est suivi du nom du fichier d'archive.

Par exemple, si vous souhaitez compresser le dossier nommé VLM sous env dans anaconda, vous pouvez utiliser la commande suivante :

tar -czvf VLM.tar.gz VLM
  • 1

Avis

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

Insérer la description de l'image ici

Si vous souhaitez compresser un seul fichier, tel que monfichier.txt, vous pouvez utiliser :

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

Ces commandes créeront un fichier .tar.gz dans le répertoire actuel. Vous pouvez modifier le chemin du fichier ou spécifier le répertoire de sortie si nécessaire.
Insérer la description de l'image ici
Compression réussie

Réactiver l'environnement

3. Étape 3 : Activer l'environnement
Pour la compression tar, exécution de décompression

tar -xzvf VLM.tar.gz
  • 1

Si le .zip est copié sur un autre système et extrait dans le répertoire /xxxx/anaconda/envs/, il est

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

Avis!L'environnement virtuel packagé enregistre l'environnement source. Le chemin d'installation d'anaconda sur le nouveau système peut être différent de l'environnement source. Par exemple, l'environnement source est /xxxx/anaconda2023/ et le nouveau système est /xxxx/anaconda/. dans ce cas, vous devez d'abord créer un répertoire vide sur le nouveau système qui est le même que le chemin d'installation d'anaconda de l'environnement source, tel que le chemin d'origine wsl.localhostUbuntuhometestanaconda3envsVLM
mkdir /xxxx/anaconda3/envs/
Créez ensuite un lien symbolique
ln -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
Pointez le répertoire vide vers le chemin réel de l'anaconda
Activez ensuite la source d'environnement activate /xxxx/anaconda/envs/VLM

J'espère que cela pourra se terminer en douceur !

Eh bien, si cela vous est utile, n'hésitez pas à le copier. Veuillez indiquer qwq s'il est difficile à organiser et à réimprimer !
Si vous avez de meilleures suggestions ou commentaires, ajoutez-les !
Je m'appelle Qi Yunpeng (Qí Qí) et je m'efforce de partager la joie des algorithmes avec tout le monde !

Une photo par blog (1/1)↓
Insérer la description de l'image ici

Référence:
conda-pack migre les environnements virtuels
Migration de sauvegarde de l'environnement virtuel Conda de l'environnement hors ligne - problème du pack conda