Configuración del Entorno de Ejecución PaddlePaddle para Dispositivos Ascend NPU

Gestión de Imágenes de Contenedor CANN

El primer paso implica obtener el artefacto de imagen Docker adecuado para la arquitectura del sistema objetivo. Se recomienda priorizar la versión 8.0 de la pila CANN.

Importación de la Imagen al Host

Una vez descargado el archivo comprimido, es necesario cargarlo en el tiempo de ejecución de Docker presente en el servidor Ascend:

docker load -i paddle-npu_cann80RC1-ubuntu20-aarch64-gcc84-py39.tar

Verifique la presencia del nuevo registro ejecutando:

docker images | grep paddle-npu

Debería visualizar una etiqueta similar a: registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-aarch64-gcc84-py39.

Inicialización del Contenedor de Trabajo

Escriba el comando de ejecución asignando permisos privilegiados y montando los volúmenes necesarios para acceder a los controladores de hardware y sistemas de archivos locales:

sudo docker run -it --name env_ascend_npu \
  --privileged --network=host --shm-size=128G \
  -v /home/:/home/user \
  -v $(pwd):/project_root \
  -w /project_root \
  -v /ssd1/dataset:/project_root/datasets \
  -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
  -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
  -v /usr/local/dcmi:/usr/local/dcmi \
  -e ASCEND_RT_VISIBLE_DEVICES="0-7" \
  registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-aarch64-gcc84-py39 \
  /bin/bash

Despliegue del Framework PaddlePaddle

Para la implementación del motor de aprendizaje profundo, existen dos vías principales: compilación desde fuentes o instalación binaria. Para la mayoría de los casos estándar sin necesidad de modificar el núcleo, se sugiere optar por los paquetes de construcción diaria (Nightly).

Instalación Binaria

  1. Acceda al repositorio oficial de paquetes diarios.
  2. Ejecute pip instalando el archivo .whl correspondiente.
  3. Validar versión instalada mediante inspección de módulo.
# Descarga manual o wget del paquete whl actual
# Instalación directa
pip install nombre_paquete_descargado.whl

# Verificación rápida
python3 -c "from paddle import __version__; print(__version__)"

Compilación de la Capa de Adaptación de Hardware

Dado que las integraciones específicas con hardware suelen requerir parches o actualizaciones frecuentes, se recomienda compilar el adaptador PaddleCustomDevice localmente en lugar de usar binarios precompilados.

Flujo de Compilación Local

# Clonar el repositorio de adaptación de dispositivos
git clone https://github.com/PaddlePaddle/PaddleCustomDevice.git

# Navegar al backend específico para NPU
cd PaddleCustomDevice/backends/npu

# Ejecutar el script de construcción
bash tools/build_script.sh

# Instalar el resultado generado forzando sobreescritura
pip install build/dist/paddle_custom_npu*.whl --force-reinstall

Actualización Manual del Stack CANN (Opcional)

Si el entorno requiere una versión específica distinta a la precargada en la imagen base, siga este procedimiento de actualización personalizada.

Procedimiento de Actualización

Descargue los componentes toolkit y kernels desde el portal de desarrolladores de HiSilicon. Antes de ejecutar los instaladores, asegurese de limpiar registros previos que impidan la definición de rutas alternativas:

# Eliminar bloqueos de configuración anterior
rm -f /etc/Ascend/ascend_cann_install.info

# Asignar permisos de ejecución a los instaladores
chmod +x Ascend-cann-toolkit_*.run
chmod +x Ascend-cann-kernels_*.run

# Configurar permisos del directorio destino
chmod 755 -R /home/proyectos/Ascend/

# Ejecutar instalación indicando ruta personalizada absoluta
./Ascend-cann-toolkit_*.run --full --install-path=/home/proyectos/Ascend/
./Ascend-cann-kernels_*.run --install --install-path=/home/proyectos/Ascend/

Configuración de Variables de Ambiente

Si se utiliza una ruta no predeterminada, es imperativo exponer las variables correctas al shell antes de compilar dependencias:

# Activar entorno básico
source /home/proyectos/Ascend/ascend-toolkit/set_env.sh

# Definir ruta personalizada para el compilador Paddle
export ASCEND_CUSTOM_PATH=/home/proyectos/Ascend

# Nota: Cualquier cambio en CANN requiere recompilar PaddleCustomDevice
cd PaddleCustomDevice/backends/npu
bash tools/build_script.sh
pip install build/dist/paddle_custom_npu*.whl --force-reinstall

Diagnóstico y Solución de Problemas Comunes

  • Fallo en Ruta Personalizada: Verifique que el archivo de información de instalación haya sido eliminado previamente.
  • Denegación de Acceso: Confirme que el directorio de destino tenga permisos de lectura/ejecución (755) antes de lanzar el instalador. Revise /var/log/ascend_seclog/.
  • Error en PATH: Al exportar ASCEND_CUSTOM_PATH, evite barras finales en la ruta.
  • Conflictos de Enlaces Simbólicos: Si cambia de versión manteniendo librerías antiguas, puede necesitar vincular directorios como atb y driver manaulmente hacia la nueva ubicación.

Validación del Sistema

Para confirmar que la integración entre el framework y el procesador es funcional, ejecute las siguientes rutinas de verificación. Se recomienda encapsularlos en un script Python dedicado para mayor claridad.

Comprobación de Detectores de Hardware

# Script: validate_backend.py
import paddle

detected_backends = paddle.device.get_all_custom_device_type()
print(f"Backends disponibles: {detected_backends}")

if 'npu' in detected_backends:
    print("Estado: NPU detectado correctamente.")
else:
    print("Error: No se encuentra soporte NPU.")

Inspceción de Versiones y Construcción

# Script: validate_version.py
try:
    import paddle_custom_device
    info = paddle_custom_device.npu.version()
    print(info)
except ImportError:
    print("Módulo de dispositivo personalizado no encontrado.")

Prueba Integral de Salud del Framework

# Script: health_check.py
import paddle.utils

try:
    status = paddle.utils.run_check()
    print("Resultado diagnóstico:", status)
    # Salida esperada confirma operación exitosa en múltiples NPUs
except Exception as e:
    print(f"Falla en diagnóstico: {e}")

Etiquetas: PaddlePaddle Ascend CANN Docker AIInfrastructure

Publicado el 8-1 15:39