В этой статье мы собираемся объяснить, как прикрепить пользовательский образ Spark NLP, Spark NLP для здравоохранения и Spark OCR Docker к SageMaker Studio.

Требования:

  • Учетная запись AWS с разрешениями IAM, предоставленными для ECR, SageMaker, Network Traffic (должны быть установлены учетные данные AWS)
  • Докер
  • Действительные лицензионные ключи для Spark NLP for Healthcare и Spark OCR. (Лицензионные ключи не требуются для общедоступной версии Spark NLP — при необходимости измените Dockerfile). Чтобы получить пробную лицензию, перейдите по ссылке: https://www.johnsnowlabs .ком/установить/»

Инструкции и файлы взяты из этого репозитория.

1. Распаковка кода

Разархивируйте файл sagemaker_template.zip, если вы этого еще не сделали. Внутри вы должны найти следующие файлы:

  • Докерфайл
  • SparkNLP_sagemaker.ipynb
  • приложение-изображение-config-input.json
  • ecr_configure.sh
  • среда.yml
  • README.md
  • лицензия.json

2. Установите лицензию

license.json пусто. Вы должны перезаписать его своей собственной лицензией, используя как OCR, так и секретный и лицензионный коды Healthcare. Следующие поля являются обязательными и должны присутствовать в ваших лицензиях. если нет, свяжитесь с командой JSL по адресу [email protected].

{
    "AWS_ACCESS_KEY_ID": "",
    "AWS_SECRET_ACCESS_KEY": "",
    "SPARK_OCR_LICENSE": "",
    "SPARK_OCR_SECRET": "",
    "PUBLIC_VERSION": "",
    "OCR_VERSION": "",
    "SPARK_NLP_LICENSE": "",
    "SECRET": "",
    "JSL_VERSION": ""
}

3. Настройте ЭКР

Образ Docker для SageMaker должен находиться в AWS ECR.

Чтобы настроить свой ECR, вам нужно открыть ecr_configure.sh и установить следующие поля:

REGION= 	# Your AWS region for ECR. Example, eu-central-1
ACCOUNT_ID= 	# Your AWS Account Id. Example, 123456789
IMAGE_NAME= 	# Any name may work here, for example, SparkNLP
REPO_NAME=	# The repo name in ECR. It will try to create one if it is not present. Example: JSL
ROLE_ARN=	# AWS ARN Role, something that usually you create when starting Sagemaker, and that allows using ECR and grants other permission

4. Выполнить ecr_configure.sh

После настройки переменных ecr_configure.sh, как описано в предыдущем разделе, вы сможете создать образ Docker, используя доступный файл Dockerfile, и этот скрипт создаст его и загрузит в ECR. Просто беги:

./ecr_configure.sh

Если у него нет прав на выполнение, просто используйте bash ./ecr_configure.sh или предоставьте разрешения, выполнив chmod +x ecr_configure.sh

Не закрывайте терминал, вам понадобится вывод (особенно URI изображения) для его добавления в SageMaker.

После запуска файла .sh убедитесь, что эти выходные данные присутствуют:

- Сообщение о том, что репозиторий создан. Если репозиторий уже существует, вы получите «Произошла ошибка (RepositoryAlreadyExistsException) при вызове операции CreateRepository: репозиторий с именем «jsl» уже существует в реестре с идентификатором «XXXX»», который вы можете игнорировать.

  • Login Succeeded
  • Image successfully tagged, Сборка 2.6s (18/18) ЗАВЕРШЕНА и/или информация о выводе сборки Dockerfile, в зависимости от вашей версии Docker и ОС.
  • Pushed the image properly или информацию о создании всех слоев образа Docker, например:
The push refers to repository [ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/REPO_NAME]ada4ff8fc3ed: Pushed95b2e5a9f88d: Pushed 
1c38ff1b8f8b: Pushed
2429bf5919e0: Pushed…
  • ImageVersionStatus is CREATED :
{
   "BaseImage": "ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/REPO_NAME:IMAGE_NAME",
   "ContainerImage": "ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/REPO_NAME@sha256:eXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
   "CreationTime": "2021-12-15T13:24:31.162000+00:00",
   "ImageArn": "arn:aws:sagemaker:REGION:ACCOUNT_ID:image/IMAGE_NAME",
   "ImageVersionArn": "arn:aws:sagemaker:REGION:ACCOUNT_ID:image-version/IMAGE_NAME/1",
   "ImageVersionStatus": "CREATED",
   "LastModifiedTime": "2021-12-15T13:24:31.525000+00:00",
   "Version": 1
}

ПРИМЕЧАНИЕ. Если имя REPO_NAME уже существует в вашем ECR, первая команда покажет предупреждение о том, что оно уже существует. Вы можете игнорировать это.

5. Откройте SageMaker

В Sagemaker перейдите к SageMaker Domain -> Studio. Убедитесь, что у вас есть активный пользователь с ролью arn, которую вы установили в ROLE_ARN в Разделе 3.

В нижней части экрана вы увидите Customer SageMaker Studio images attached to domain.

6. Прикрепить изображение

В Choose image source щелкните New Image, а затем в Enter an ECR image URI добавьте URI, который вы увидите в журналах с шага 4. Нажмите «Далее».

Затем в Image properties заполните Image name (так же, как IMAGE_NAME на шаге 3) и Image display name (также используйте IMAGE_NAME). В IAM role убедитесь, что вы выбрали тот же ROLE_ARN из раздела 3 в раскрывающемся списке. Нажмите «Далее».

EFS mount path должно быть /root. Имя ядра должно быть conda-env-myenv-py. Отображаемое имя ядра должно быть Python [conda env: myenv]. Нажмите «Расширенная конфигурация». Установите User ID (UID) на 0. Установите Group ID (GUID) на 0. Нажмите «Отправить».

7. Запуск SageMaker Studio

После нажатия кнопки «Отправить» вы увидите статус «Готово» на экране Sagemaker Domain -> Studio. Перейдите в раздел «Пользователи» (в верхней части экрана), нажмите Launch app и выберите Studio.

Для запуска SageMaker Studio потребуется некоторое время, потому что будет создан контейнер добавленного нами образа. После этого вы можете начать новую записную книжку. Убедитесь, что вы видите активное ядро ​​Python [conda env: myenv]. Также может потребоваться некоторое время для отжима.

7.1 Важное примечание:

ВАЖНО!!! Убедитесь, что самая первая команда в блокноте:

!echo "127.0.0.1 $HOSTNAME" >> /etc/hosts

После вращения вы готовы к работе. Найдите в папке .zip пример блокнота SparkNLP_sagemaker.ipynb, который вы можете загрузить, чтобы проверить, работает ли ваша установка.

8. Есть сомнения?

Напишите нам на [email protected]