Клей AWS

Давным-давно в мистической стране науки о данных жило разнообразное сообщество мастеров данных, обладавших огромными знаниями в области управления данными и их обработки. Они всегда искали новые чары, которые помогли бы им манипулировать, понимать и преобразовывать данные более эффективно.

Однажды они обнаружили мощное заклинание под названием AWS Glue. Это волшебное зелье было придумано великими чародеями Дома Amazon Web Services. Мастера данных были в восторге, узнав, что AWS Glue — это полностью управляемый сервис извлечения, преобразования и загрузки (ETL), который может помочь им автоматизировать трудоемкий процесс обработки данных.

В течение многих лет эти Мастера данных работали с гигантскими кучами данных, борясь с надоедливыми гоблинами данных, такими как отсутствующие значения, несовместимые форматы и >дублировать записи. Но теперь, благодаря волшебной силе AWS Glue, они могли взмахнуть волшебной палочкой (или написать несколько строк кода на Python или Scala) и наблюдать, как гоблины данных побеждаются.

AWS Glue стал притчей во языцех, как только мог:

  • Пробирайтесь сквозь темные подземелья озер и хранилищ данных, создавая таблицы метаданных, которые позволили мастерам данных лучше понять загадочное содержимое их областей данных.
  • Объедините мощь Apache Spark с гибкостью Python и Scala, что позволит мастерам создавать мощные заклинания ETL, которые могут быстро создавать чистые и структурированные данные для анализа.
  • Автоматически генерируйте код ETL, чтобы мастера данных могли больше сосредоточиться на своих волшебных зельях данных, а не на рутинной задаче написания кода.
  • Организуйте рабочие процессы ETL, помогая мастерам данных планировать и управлять своими заклинаниями в нескольких источниках данных, чтобы они могли насладиться заслуженной ночью пиршества и танцев в деревенской таверне.

Мастера данных были поражены тем, как AWS Glue изменил их работу, превратив когда-то громоздкие задачи с данными в восхитительный танец волшебства данных. Имея в своем арсенале AWS Glue, мастера данных теперь могут сосредоточиться на разгадывании скрытых секретов в своих данных, совершении новых открытий и использовании более мощных заклинаний, основанных на данных.

Обработка мудрецов

В один прекрасный день, когда волшебники данных с радостью использовали AWS Glue, в области науки о данных появился новый герой: SageMaker Processing. Это мощное новое заклинание, также созданное вдохновителями Дома веб-сервисов Amazon, обещало вывести навыки Мастеров данных на совершенно новый уровень колдовства.

Волшебники Данных, всегда любопытные к изучению новых заклинаний, вскоре обнаружили, что обработка SageMaker не была обычной магией; это было сильнодействующее зелье, которое позволяло им выполнять предварительную обработку данных, разработку признаков и оценку модели в больших масштабах прямо перед обучением своих великолепные модели машинного обучения.

Мастера данных с большим волнением узнали, что SageMaker Processing может:

  • Раскройте всю мощь своих заклинаний машинного обучения, предоставив полностью управляемую, масштабируемую и гибкую среду, позволяющую выполнять предварительную обработку и преобразование данных с молниеносной скоростью.
  • Предоставьте им обширную библиотеку встроенных алгоритмов и платформ, гарантируя, что их книги заклинаний всегда будут в курсе последних тайных знаний из областей TensorFlow, PyTorch и MXNet.
  • Беспрепятственно интегрируйтесь с волшебной страной AWS Glue, позволяя мастерам данных объединять мощные конвейеры данных, охватывающие все этапы от обработки данных до обучения моделей и их развертывания.
  • Легко управляйте ресурсами, необходимыми для их экспериментов, гарантируя, что маги данных никогда не исчерпают магическую энергию (или вычислительную мощность) при использовании своих самых амбициозных заклинаний.

С SageMaker Processing мастера данных теперь было не остановить. Они могли обрабатывать данные, создавать захватывающие модели машинного обучения и запускать свои заклинания в производство всего несколькими взмахами волшебной палочки.

Союз AWS Glue и SageMaker Processing принес процветание и гармонию в страну науки о данных. Волшебники данных радовались, поскольку их работа стала более эффективной и приятной, чем когда-либо прежде, и они продолжали исследовать бесконечные возможности своих вновь обретенных сил, открывая глубочайшие тайны вселенной данных.

Настройка обработки Sagemaker

Итак, мастера данных приступили к поиску задания для обработки SageMaker Processing с использованием ScriptProcessor. Вот зачарованный код Python, который они использовали, чтобы воплотить свое заклинание в жизнь:

import sagemaker
from sagemaker import get_execution_role
from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput

# Step 1: Craft the Spell
# The Data Wizards wrote their preprocessing incantations in a script file (e.g., 'preprocessing.py')

# Step 2: Summon the ScriptProcessor
role = get_execution_role()
session = sagemaker.Session()
script_processor = ScriptProcessor(base_job_name='example-processing-job',
                                   image_uri='your-processing-container-image-uri',
                                   command=['python3'],
                                   role=role,
                                   instance_count=1,
                                   instance_type='ml.m5.xlarge')

# Step 3: Gather the Artifacts
input_data_s3_uri = 's3://your-bucket/your-input-data-path/'
output_data_s3_uri = 's3://your-bucket/your-output-data-path/'

inputs = [
    ProcessingInput(source=input_data_s3_uri, destination='/opt/ml/processing/input'),
]
outputs = [
    ProcessingOutput(source='/opt/ml/processing/output', destination=output_data_s3_uri),
]

# Step 4: Conjure the Environment
env = {'MY_ENV_VAR': 'your-value'}

# Step 5: Invoke the Spell
script_processor.run(code='preprocessing.py',
                     inputs=inputs,
                     outputs=outputs,
                     arguments=['--arg_name', 'arg_value'],
                     environment=env)

# Step 6: Monitor the Sorcery
job_description = script_processor.jobs[-1].describe()
print(job_description)

Зачарованный код Python от Data Wizards для настройки задания SageMaker Processing с использованием ScriptProcessor состоит из шести важных шагов:

  • Создайте заклинание: Мастера данных сначала пишут сценарий предварительной обработки на Python, который содержит заклинания, необходимые для выполнения задачи предварительной обработки. Этот скрипт (например, preprocessing.py) является сердцевиной задания Processing, содержащим логику для преобразования входных данных.
  • Вызвать ScriptProcessor. На этом этапе мастера данных создают экземпляр класса ScriptProcessor. Они указывают необходимые параметры, такие как имя базового задания, URI образа контейнера, роль, количество экземпляров и тип экземпляра. Параметр image_uri особенно важен, так как он указывает на образ контейнера обработки, который будет запускать сценарий предварительной обработки.
  • Соберите артефакты. Затем мастера данных определяют расположение входных и выходных данных для своего задания обработки SageMaker. Они создают объекты ProcessingInput и ProcessingOutput, предоставляя исходный и конечный пути в Amazon S3. Входные и выходные данные указываются в виде списков, что позволяет мастерам обрабатывать несколько артефактов входных и выходных данных, если это необходимо.
  • Вызов среды. Чтобы настроить среду, в которой будет выполняться их сценарий предварительной обработки, мастера данных определяют словарь с переменными среды. Доступ к этим переменным можно получить в сценарии предварительной обработки, и они полезны для передачи в сценарий дополнительной конфигурации или параметров.
  • Вызвать заклинание: мастера данных вызывают метод run() экземпляра ScriptProcessor, чтобы инициировать задание обработки SageMaker. Они передают параметр кода, который указывает на их сценарий предварительной обработки, а также на входы, выходы, аргументы и среду. Параметр arguments позволяет им передавать аргументы командной строки сценарию предварительной обработки для дальнейшей настройки.
  • Наблюдение за колдовством. Чтобы следить за ходом выполнения своего задания по обработке данных в SageMaker, мастера данных получают доступ к описанию задания с помощью метода description(). Это предоставляет полезную информацию о задании, такую ​​как его текущий статус, время начала и окончания, а также любые причины сбоя. Мастера данных также могут отслеживать журналы и метрики, создаваемые заданием, чтобы убедиться, что оно развертывается должным образом.

Эти шесть шагов помогают мастерам данных пройти через процесс настройки задания обработки SageMaker с помощью ScriptProcessor, что позволяет им уверенно и легко плести магию предварительной обработки.

Как насчет чтения данных непосредственно из Redshift в экземпляре обработки Sagemaker?

Если мастера данных хотят считывать данные из Redshift непосредственно в экземпляре SageMaker Processing, они могут изменить свой сценарий предварительной обработки Python для извлечения данных из Redshift с помощью соответствующей библиотеки, такой как psycopg2 или sqlalchemy. Такой подход позволяет мастерам данных подключаться к Redshift, выполнять запрос и получать данные непосредственно в среде обработки SageMaker.

Вот как мастера данных могут настроить свой сценарий предварительной обработки для чтения данных из Redshift:

#preprocessing.py

import os
import psycopg2
import pandas as pd

connection = psycopg2.connect(
    dbname=os.environ['REDSHIFT_DB_NAME'],
    host=os.environ['REDSHIFT_HOST'],
    port=os.environ['REDSHIFT_PORT'],
    user=os.environ['REDSHIFT_USER'],
    password=os.environ['REDSHIFT_PASSWORD']
)

query = "SELECT * FROM your_redshift_table;"
data = pd.read_sql_query(query, connection)

#do whatever you want with data

А, Data Wizards поняли, что им необходимо учитывать конфигурацию сети при подключении своего экземпляра SageMaker Processing к своему кластеру Redshift. Чтобы обеспечить безопасную и бесперебойную связь между двумя областями, им потребуется настроить параметр NetworkConfig для своего задания обработки SageMaker.

Вот как мастера данных могут изменить свой код Python, включив в него сетевую конфигурацию:

from sagemaker.network import NetworkConfig

network_config = NetworkConfig(
    security_group_ids=['sg-your-security-group-id'],
    subnets=['subnet-your-subnet-id']
)

env = {
    'REDSHIFT_DB_NAME': 'your-db-name',
    'REDSHIFT_HOST': 'your-redshift-host',
    'REDSHIFT_PORT': 'your-redshift-port',
    'REDSHIFT_USER': 'your-redshift-user',
    'REDSHIFT_PASSWORD': 'your-redshift-password'
}

script_processor.run(
    code='preprocessing.py',
    #inputs=inputs, --> No need for inputs as the preprocessing.py will read data directly from redshift
    outputs=outputs,
    arguments=['--arg_name', 'arg_value'],
    environment=env,
    network_config=network_config
)

Импорт NetworkConfig: в своем коде Python мастера данных сначала импортируют класс NetworkConfig из модуля sagemaker.network:

  • Создайте конфигурацию сети. Затем мастера данных создадут объект NetworkConfig с необходимыми настройками, такими как идентификаторы группы безопасности VPC (виртуальное частное облако) и идентификаторы подсети. Эти настройки гарантируют, что экземпляр SageMaker Processing может получить доступ к кластеру Redshift в том же VPC:
  • Добавить NetworkConfig в ScriptProcessor: при вызове метода run() в экземпляре ScriptProcessor мастера данных будут включать параметр network_config, гарантируя, что их задание обработки SageMaker использует указанный Настройки сети:

Включив NetworkConfig в свое задание обработки SageMaker, мастера данных гарантируют, что их экземпляр может безопасно и эффективно взаимодействовать с кластером Redshift в том же VPC, что позволяет им использовать объединенную мощь SageMaker и Redshift в своих усилиях по обработке данных.