¿Cómo cargo un archivo desde una instancia de Notebook a OBS o descargo un archivo desde OBS a una instancia de Notebook?
En una instancia de notebook, puede invocar a la API de MoXing de ModelArts o al SDK para intercambiar datos con OBS para cargar un archivo en OBS o descargar un archivo desde OBS a la instancia de notebook.
Para obtener más información sobre cómo cargar archivos mediante OBS Browser, consulte Carga y descarga de archivos mediante OBS Browser +.
Método 1: Usar MoXing para cargar y descargar un archivo
Desarrollado por el equipo de ModelArts, MoXing es un marco de aceleración de entrenamiento distribuido basado en motores de aprendizaje profundo de código abierto como TensorFlow y PyTorch. MoXing hace que la codificación de modelos sea más fácil y eficiente.
MoXing proporciona un conjunto de API de objetos de archivo para leer y escribir archivos de OBS.
Para obtener detalles sobre la asignación entre las API de MoXing y las API nativas y cómo invocar a las API, consulta Operaciones de archivos de MoXing.
Código de ejemplo:
import moxing as mox # Download the OBS folder sub_dir_0 from OBS to a notebook instance. mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/home/ma-user/work/sub_dir_0') # Download the OBS file obs_file.txt from OBS to a notebook instance. mox.file.copy('obs://bucket_name/obs_file.txt', '/home/ma-user/work/obs_file.txt') # Upload the OBS folder sub_dir_0 from a notebook instance to OBS. mox.file.copy_parallel('/home/ma-user/work/sub_dir_0', 'obs://bucket_name/sub_dir_0') # Upload the OBS file obs_file.txt from a notebook instance to OBS. mox.file.copy('/home/ma-user/work/obs_file.txt', 'obs://bucket_name/obs_file.txt')
Método 2: Uso del SDK para cargar y descargar un archivo
Invoque al SDK de ModelArts para descargar un archivo de OBS.
Ejemplo de código: Descargue file1.txt de OBS a /home/ma-user/work/ en la instancia de notebook. Todo el nombre del bucket, el nombre de la carpeta y el nombre del archivo son personalizables.
1 2 3 |
from modelarts.session import Session session = Session() session.obs.download_file(src_obs_file="obs://bucket-name/dir1/file1.txt", dst_local_dir="/home/ma-user/work/") |
Invoque al SDK de ModelArts para descargar una carpeta desde OBS.
Código de ejemplo: Descargue dir1 de OBS a /home/ma-user/work/ en la instancia de notebook. El nombre del bucket y el nombre de la carpeta son personalizables.
from modelarts.session import Session session = Session() session.obs.download_dir(src_obs_dir="obs://bucket-name/dir1/", dst_local_dir="/home/ma-user/work/")
Invoque al SDK de ModelArts para cargar un archivo en OBS.
Ejemplo de código: Cargue file1.txt en la instancia del notebook a obs://bucket-name/dir1/ del bucket de OBS. Todo el nombre del bucket, el nombre de la carpeta y el nombre del archivo son personalizables.
1 2 3 |
from modelarts.session import Session session = Session() session.obs.upload_file(src_local_file='/home/ma-user/work/file1.txt', dst_obs_dir='obs://bucket-name/dir1/') |
Invoque al SDK de ModelArts para cargar una carpeta en OBS.
Ejemplo de código: Suba /work/ en la instancia del notebook a obs://bucket-name/dir1/work/ del bucket-name. El nombre del bucket y el nombre de la carpeta son personalizables.
from modelarts.session import Session session = Session() session.obs.upload_dir(src_local_dir='/home/ma-user/work/', dst_obs_dir='obs://bucket-name/dir1/')
Manejo de errores
Si descarga un archivo de OBS a la instancia de su notebook y el sistema muestra el mensaje de error "Permission denied", realice las siguientes operaciones para solucionar problemas:
- Asegúrese de que el bucket de OBS y la instancia del notebook de destino estén en la misma región, por ejemplo, en CN North-Beijing4. Si el bucket de OBS y la instancia de notebook están en diferentes regiones, se deniega el acceso a OBS. Para obtener más información, consulte ¿Cómo puedo comprobar si ModelArts y un bucket de OBS están en la misma región?
- Asegúrese de que la cuenta del notebook tenga permiso para leer datos en el bucket de OBS. Si la cuenta no tiene el permiso, consulte ¿Cómo accedo al bucket de OBS de otra cuenta desde una instancia de notebook?