Configuración de Repositorios Espejo en Conda
Los servidores predeterminados de Anaconda pueden presentar latencia elevada dependiendo de la región geográfica. Para optimizar la velocdiad de descarga de paquetes, es recomendable configurar un repositorio espejo (mirror). A continuación, se muestra cómo agregar y priorizar un mirror, como el proporcionado por TUNA:
conda config --prepend channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --prepend channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls true
Clonación de Entornos Virtuales
Al trabajar en servidores compartidos, es una buena práctica duplicar un entorno existente antes de realizar modificaciones. Esto evita alterar la configuración de otros usuarios o romper dependencias en entornos de producción.
Clonar por Nombre de Entorno
Si se desea replicar un entorno llamado env_produccion a uno nuevo llamado env_desarrollo:
conda create --name env_desarrollo --clone env_produccion
Clonar por Ruta de Directorio
También es posible clonar un entorno especificando su ruta absoluta en el sistema de archivos:
conda create --name env_pruebas --clone /opt/anaconda3/envs/env_produccion
Clonar el Entorno Base
El entorno base no puede ser empaquetado directamente para migración. Si se requiere transferir, primero debe ser clonado a un entorno con nombre:
conda create --name env_base_copia --clone base
Empaquetado y Migración de Entornos
Para transferir un entorno completo a otra máquina, se utiliza la herramienta conda-pack. Esta utilidad crea un archivo comprimido con todas las dependencias y binarios, permitiendo una migración exacta.
Instalación de conda-pack
conda install --channel conda-forge conda-pack
Generación del Archivo Comprimido
Para empaquetar el entorno env_desarrollo en un archivo .tar.gz:
conda pack --name env_desarrollo --output env_desarrollo_migracion.tar.gz
El archivo resultante puede transferirse al servidor destino. Es fundamental que la versión de Anaconda en la máquina de destino sea compatible. Una vez transferido, se extrae en el directorio envs de la instalación de Conda de destino.
Activación en el Servidor Destino
conda activate env_desarrollo
Instalación Offline de PyTorch
Instalar PyTorch directaemnte desde los repositorios oficiales mediante pip o conda a menudo resulta en errores de timeout debido al gran tamaño de los paquetes. Una alternativa robusta es la instalación local utilizando archivos .whl.
Descarga de Paquetes Wheel
Acceda al repositorio oficial de wheels de PyTorch y descargue las versiones específicas de torch y torchvision que coincidan con su versión de Python y CUDA. Se recomienda utilizar un gestor de descargas para evitar interrupciones de red.
Instalación Local en el Entorno Virtual
Primero, active su entorno virtual:
conda activate env_deep_learning
Luego, navegue al directorio donde se descargaron los archivos e instálelos. Es aconsejable instalar primero las dependencias básicas como numpy:
pip install numpy
pip install torch-2.1.0+cu118-cp310-cp310-linux_x86_64.whl
pip install torchvision-0.16.0+cu118-cp310-cp310-linux_x86_64.whl --no-deps
El parámetro --no-deps evita que pip intente resolver dependencias en línea, forzando el uso estricto de los paquetes locales descargados.
Diagnóstico de Conflictos entre CUDA y PyTorch
Si el entorno presenta fallos al utilizar la GPU, generalmente se debe a una incompatibilidad entre la versión del controlador NVIDIA, el toolkit de CUDA y la compilación de PyTorch.
Verificación de la Versión de CUDA del Sistema
Ejecute el siguiente comando para comprobar la versión máxima de CUDA soportada por el controlador:
nvidia-smi
Si el comando no es reconocido en Windows, asegúrese de agregar la ruta C:\Program Files\NVIDIA Corporation\NVSMI a las variables de entorno del sistema (PATH).
Verificación del Compilador CUDA
nvcc --version
Validación en Python
Ingrese al intérprete de Python dentro de su entorno virtual y ejecute:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
Si torch.cuda.is_available() retorna False, revise que la versión de CUDA con la que fue compilado el wheel de PyTorch sea igual o menor a la versión máxima soportada por su controlador NVIDIA.