技術共有

[Pytorch] Conda 環境パックのパッケージング移行エラー処理

2024-07-12

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

Anaconda 仮想環境のパッケージ化

このマシンでは実験は正常に検証されましたが、1 台の 4090D で推論と評価を行うには 2 時間半かかりました。まだ時間がかかりすぎて大変な作業でした。早急に 8A100 マシンに引き継ぐ必要があります。
ここに画像の説明を挿入します

anaconda 環境をソース コンピューターからターゲット コンピューターに移行するには、まず両方のコンピューターに anaconda がインストールされている必要があります。

1. ソースコンピュータの環境パッケージ化

Anaconda プロンプト操作を使用する

1. conda-pack ツールをインストールする

conda install conda-pack
  • 1

ここに画像の説明を挿入します

2. 環境を決定する

conda env list
  • 1

ここに画像の説明を挿入します

パッケージ化する環境の名前を見つけます。たとえば、私の環境名は VLM です。

3. 梱包環境

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

4. パッケージング環境を USB フラッシュ ドライブにコピーします。

Windows 環境は、たとえば、XX がユーザー名、パスが現在のディレクトリにパッケージ化されています。
C:/Users/XX/VLM.tar.gz
Linuxでも同様

2. 環境をターゲットコンピュータに移行します。

①方法1
1. Anaconda プロンプトを使用して新しい環境を作成します。たとえば、新しい環境は py310 です。

conda create -n py310 python=3.10
  • 1

2. USB フラッシュ ドライブのパッケージ環境をターゲット コンピュータのユーザー名ディレクトリにコピーします。
C:/Users/XX/Py36.tar.gz
3. Anaconda プロンプトを使用して、パッケージ化された環境を新しい環境パスに解凍します。

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

4. 新しい環境をアクティブ化する

conda activate py310
  • 1

注: これが失敗した場合は、方法 2 を試してください。
②方法2
1. ターゲットコンピュータの環境フォルダを見つけます。
環境のパスは、anaconda が配置されているディレクトリ内の envs フォルダーです。たとえば、次の手順はこのパスの下で実行されます。
2. USB フラッシュ ドライブ内のパッケージング環境を環境フォルダー envs にコピーします。
3. 環境パスで cmd コマンド ラインを使用して新しいフォルダーを作成し、py36 という名前を付けます。

mkdir py36
  • 1

または、新しいフォルダーを手動で作成します
4. cmd コマンド ラインを使用して、パッケージ環境を新しい環境に解凍します。

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

3. 例外処理

pip install -e はパック→無視に失敗します。

エラーは次のように報告されます

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

代わりに以下を使用してください

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

を使用して解凍します

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

管理ファイルが削除または上書きされた → 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

解決策は、WSL の利点を利用して、環境 env を Windows の直下にパッケージ化することでした。しかし、膨大な数の依存関係エラーと名前付けエラーが報告されました。
ここに画像の説明を挿入します
結局、諦めてLinux環境でパッケージ化と圧縮を試みましたが、それは可能でしょうか?
Linux では、tar コマンドを使用して、ファイルまたはフォルダーを .tar.gz 形式に圧縮できます。
tar はファイルをパッケージ化するために使用されるコマンドです。
-c は、新しいアーカイブ ファイルを作成することを意味します。
-z は、gzip 圧縮を使用することを意味します。
-v は、アーカイブ時に詳細な情報を表示することを示します。
-f の後にはアーカイブ ファイルの名前が続きます。

たとえば、anaconda の env の下にある VLM という名前のフォルダーを圧縮する場合は、次のコマンドを使用できます。

tar -czvf VLM.tar.gz VLM
  • 1

知らせ

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

ここに画像の説明を挿入します

myfile.txt などの単一ファイルを圧縮する場合は、以下を使用できます。

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

これらのコマンドは、現在のディレクトリに .tar.gz ファイルを作成します。必要に応じて、ファイル パスを変更したり、出力ディレクトリを指定したりできます。
ここに画像の説明を挿入します
圧縮が成功しました

環境を再アクティブ化する

3. ステップ 3: 環境をアクティブ化する
tar圧縮・解凍実行の場合

tar -xzvf VLM.tar.gz
  • 1

.zip が別のシステムにコピーされ、ディレクトリ /xxxx/anaconda/envs/ に抽出されると、

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

知らせ!パッケージ化された仮想環境は、新しいシステムの anaconda インストール パスがソース環境と異なる場合があります。たとえば、ソース環境は /xxxx/anaconda/ です。この場合、まず新しいシステム上に、ソース環境の anaconda インストール パスと同じ空のディレクトリを作成する必要があります (元のパス wsl.localhostUbuntuhometestanaconda3envsVLM など)。
mkdir /xxxx/anaconda3/envs/
次にソフトリンクを作成します
ln -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
空のディレクトリを実際の anaconda パスにポイントする
次に、環境ソースをアクティブ化します。activate /xxxx/anaconda/envs/VLM

無事に完成できるといいですね!

では、お役に立てましたら、ご自由にコピーしてください。整理して転載するのが難しい場合は、qwqと明記してください。
より良い提案やコメントがあれば、ぜひ追加してください。
私の名前は Qi Yunpeng (Qi Qí) です。アルゴリズムの楽しさを皆さんと共有できるように努めています。

1ブログにつき1枚(1/1)↓
ここに画像の説明を挿入します

参照:
conda-pack は仮想環境を移行します
オフライン環境 conda 仮想環境のバックアップ移行 – conda Pack の問題