Обмен технологиями

[Pytorch] Обработка ошибок миграции упаковки пакета среды Conda

2024-07-12

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

Упаковка виртуальной среды Anaconda

Эксперимент был успешно проверен на этой машине. Его необходимо перенести на высокопроизводительное оборудование. На одном 4090D потребовалось два с половиной часа, чтобы запустить мультимодальную большую модель 128k для вывода и оценки набора данных. Это все равно была слишком трудоемкая и тяжелая задача. Ее нужно было срочно передать машине 8А100.
Вставьте сюда описание изображения

Чтобы перенести среду anaconda с исходного компьютера на целевой компьютер, сначала на обоих компьютерах должна быть установлена ​​anaconda.

1. Упаковка среды исходного компьютера

Используйте операцию Anaconda Prompt

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:/Пользователи/XX/VLM.tar.gz
То же самое для Linux

2. Перенесите среду на целевой компьютер.

①Метод 1
1. Используйте подсказку Anaconda, чтобы создать новую среду, например, новая среда — py310:

conda create -n py310 python=3.10
  • 1

2. Скопируйте среду упаковки с USB-накопителя в каталог имени пользователя целевого компьютера:
C:/Пользователи/XX/Py36.tar.gz
3. Используйте подсказку Anaconda, чтобы разархивировать упакованную среду в новый путь к среде:

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

4. Активируйте новую среду

conda activate py310
  • 1

Примечание. Если это не помогло, попробуйте второй метод:
②Метод 2
1. Найдите папку среды целевого компьютера.
Путь к среде — это папка envs в каталоге, где находится anaconda. Например, у меня: E: anaconda3envs. Следующие шаги выполняются по этому пути.
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 в anaconda непосредственно под Windows. Однако сообщалось об огромном количестве ошибок зависимостей и ошибок именования.
Вставьте сюда описание изображения
В конце концов я сдался и попробовал упаковку и сжатие в системе Linux. Возможно ли это?
В Linux вы можете использовать команду tar для сжатия файла или папки в формат .tar.gz.
tar — это команда, используемая для упаковки файлов.
-c означает создание нового архивного файла.
-z означает использование сжатия gzip.
-v указывает на отображение подробной информации при архивировании.
За параметром -f следует имя файла архива.

Например, если вы хотите сжать папку с именем VLM в env в anaconda, вы можете использовать следующую команду:

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/anaconda2023/, а новая система — /xxxx/anaconda/. В этом случае вам необходимо сначала создать пустой каталог в новой системе, который совпадает с путем установки исходной среды anaconda, например, исходный путь wsl.localhostUbuntuhometestanaconda3envsVLM.
mkdir /xxxx/anaconda3/envs/
Затем создайте мягкую ссылку
ln -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
Укажите пустой каталог на фактический путь анаконды
Затем активируйте источник среды, активируйте /xxxx/anaconda/envs/VLM.

Надеюсь, что все пройдет гладко!

Ну, если это вам полезно, смело скопируйте. Пожалуйста, укажите qwq, если сложно систематизировать и перепечатать!
Если у вас есть лучшие предложения или комментарии, пожалуйста, добавьте их!
Меня зовут Ци Юньпэн (Ци Ци), и я стремлюсь поделиться радостью алгоритмов со всеми!

Одна картинка в блоге (1/1)↓
Вставьте сюда описание изображения

Ссылка:
conda-pack переносит виртуальные среды
Миграция резервной копии виртуальной среды conda в автономной среде – проблема с пакетом conda