Compartilhamento de tecnologia

[Pytorch] Tratamento de erros de migração de pacote de ambiente Conda

2024-07-12

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

Embalagem do ambiente virtual Anaconda

O experimento foi verificado com sucesso nesta máquina. Ele precisa ser migrado para equipamentos de última geração. Com um único 4090D, foram necessárias duas horas e meia para executar um grande modelo multimodal de 128k para inferência e avaliação em um conjunto de dados. Ainda era uma tarefa muito demorada e pesada. É urgentemente necessário entregá-la à máquina 8A100.
Insira a descrição da imagem aqui

Para migrar o ambiente anaconda do computador de origem para o computador de destino, primeiro, ambos os computadores devem ter o anaconda instalado nesta base.

1. Embalagem ambiental do computador de origem

Use a operação Prompt do Anaconda

1. Instale a ferramenta conda-pack

conda install conda-pack
  • 1

Insira a descrição da imagem aqui

2. Determine o ambiente

conda env list
  • 1

Insira a descrição da imagem aqui

Encontre o nome do ambiente que você deseja empacotar. Por exemplo, o nome do meu ambiente é VLM

3. Ambiente de embalagem

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

4. Copie o ambiente de embalagem para uma unidade flash USB

O ambiente Windows é empacotado no diretório atual. Por exemplo, XX é o nome do usuário e o caminho é.
C:/Usuários/XX/VLM.tar.gz
O mesmo para Linux

2. Migre o ambiente para o computador de destino

①Método 1
1. Use o Prompt do Anaconda para criar um novo ambiente, por exemplo, o novo ambiente é py310:

conda create -n py310 python=3.10
  • 1

2. Copie o ambiente de empacotamento na unidade flash USB para o diretório de nome de usuário do computador de destino:
C:/Usuários/XX/Py36.tar.gz
3. Use o Prompt do Anaconda para descompactar o ambiente empacotado para o novo caminho do ambiente:

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

4. Ative o novo ambiente

conda activate py310
  • 1

Nota: Se isso falhar, tente o método dois:
②Método 2
1. Encontre a pasta de ambiente do computador de destino
O caminho do ambiente é a pasta envs no diretório onde o anaconda está localizado. Por exemplo, o meu é: E:anaconda3envs.
2. Copie o ambiente de embalagem na unidade flash USB para a pasta de ambiente envs.
3. Use a linha de comando cmd no caminho do ambiente para criar uma nova pasta e nomeie-a como py36:

mkdir py36
  • 1

Ou crie uma nova pasta manualmente
4. Use a linha de comando cmd para descompactar o ambiente de empacotamento em um novo ambiente

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

3. Tratamento de exceções

pip install -e Causa falha ao empacotar→ignorar

O erro é relatado da seguinte forma

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

Use o seguinte em vez disso

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

Descompacte 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

Os arquivos gerenciados foram excluídos ou substituídos → compactados em 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

A solução foi tentar usar as vantagens do WSL para empacotar o ambiente env no anaconda diretamente no Windows. No entanto, um grande número de erros de dependência e erros de nomenclatura foram relatados.
Insira a descrição da imagem aqui
Por fim, desisti e tentei empacotar e compactar no sistema Linux. É viável?
No Linux, você pode usar o comando tar para compactar um arquivo ou pasta no formato .tar.gz.
tar é um comando usado para empacotar arquivos.
-c significa criar um novo arquivo compactado.
-z significa usar compactação gzip.
-v indica exibir informações detalhadas durante o arquivamento.
-f é seguido pelo nome do arquivo compactado.

Por exemplo, se quiser compactar a pasta chamada VLM em env no anaconda, você pode usar o seguinte comando:

tar -czvf VLM.tar.gz VLM
  • 1

Perceber

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

Insira a descrição da imagem aqui

Se quiser compactar um único arquivo, como myfile.txt, você pode usar:

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

Esses comandos criarão um arquivo .tar.gz no diretório atual. Você pode alterar o caminho do arquivo ou especificar o diretório de saída, se necessário.
Insira a descrição da imagem aqui
Compressão bem-sucedida

Reativar o ambiente

3. Passo 3: Ative o ambiente
Para compactação tar, execução de descompactação

tar -xzvf VLM.tar.gz
  • 1

Se o .zip for copiado para outro sistema e extraído para o diretório /xxxx/anaconda/envs/, ele será

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

Perceber!O ambiente virtual empacotado registra o ambiente de origem. O caminho de instalação do anaconda no novo sistema pode ser diferente do ambiente de origem. Por exemplo, o ambiente de origem é /xxxx/anaconda2023/ e o novo sistema é /xxxx/anaconda/. neste caso, você precisa primeiro criar um diretório vazio no novo sistema que seja igual ao caminho de instalação do ambiente de origem anaconda, como o caminho original wsl.localhostUbuntuhometestanaconda3envsVLM
mkdir /xxxx/anaconda3/envs/
Em seguida, crie um link simbólico
em -s /xxxx/anaconda/envs/pyenv /xxxx/anaconda3/envs/
Aponte o diretório vazio para o caminho real do Anaconda
Em seguida, ative a fonte do ambiente activate /xxxx/anaconda/envs/VLM

Espero que possa ser concluído sem problemas!

Bem, se for útil para você, sinta-se à vontade para copiá-lo. Indique qwq se for difícil de organizar e reimprimir!
Se você tiver sugestões ou comentários melhores, adicione-os!
Meu nome é Qi Yunpeng (Qí Qí) e me esforço para compartilhar a alegria dos algoritmos com todos!

Uma foto por blog (1/1)↓
Insira a descrição da imagem aqui

Referência:
conda-pack migra ambientes virtuais
Migração de backup do ambiente virtual conda do ambiente offline – problema do pacote conda