Машинное обучение (МО) становится все более сложным, поскольку клиенты пытаются решать все более сложные задачи. Эта сложность часто приводит к необходимости распределенного машинного обучения, когда для обучения одной модели используется несколько машин. Хотя это позволяет распараллеливать задачи на нескольких узлах, что приводит к ускорению времени обучения, повышению масштабируемости и производительности, при эффективном использовании распределенного оборудования возникают серьезные проблемы. Специалистам по данным приходится решать такие проблемы, как разделение данных, балансировка нагрузки, отказоустойчивость и масштабируемость. Инженерам машинного обучения приходится вручную обрабатывать распараллеливание, планирование, ошибки и повторные попытки, что требует сложного инфраструктурного кода.
В этой статье мы обсудим преимущества использования луч и Создатель мудреца Амазонки для распределенного машинного обучения и предоставить пошаговое руководство по использованию этих платформ для создания и развертывания масштабируемого рабочего процесса машинного обучения.
Ray, среда распределенных вычислений с открытым исходным кодом, предоставляет гибкую основу для распределенного обучения и обслуживания моделей машинного обучения. Он абстрагирует низкоуровневые детали распределенной системы с помощью простых масштабируемых библиотек для общих задач машинного обучения, таких как предварительная обработка данных, распределенное обучение, настройка гиперпараметров, обучение с подкреплением и обслуживание моделей.
SageMaker — это полностью управляемый сервис для создания, обучения и развертывания моделей машинного обучения. Ray легко интегрируется с функциями SageMaker для создания и развертывания сложных рабочих нагрузок машинного обучения, которые являются одновременно эффективными и надежными. Комбинация Ray и SageMaker обеспечивает комплексные возможности для масштабируемых рабочих процессов машинного обучения и имеет следующие основные функции:
- Распределенные актеры и конструкции параллелизма в Ray упрощают разработку распределенных приложений.
- Ray AI Runtime (AIR) упрощает переход от разработки к производству. С помощью Ray и AIR один и тот же код Python можно легко масштабировать с ноутбука на большой кластер.
- Управляемая инфраструктура SageMaker и такие функции, как задания обработки, задания обучения и задания настройки гиперпараметров, могут использовать библиотеки Ray для распределенных вычислений.
- Эксперименты с Amazon SageMaker позволяет быстро повторять и отслеживать испытания.
- Магазин функций Amazon SageMaker предоставляет масштабируемый репозиторий для хранения, извлечения и совместного использования функций машинного обучения для обучения моделей.
- Обученные модели можно хранить, управлять их версиями и отслеживать в Реестр моделей Amazon SageMaker для руководства и управления.
- Конвейеры Amazon SageMaker позволяет организовать сквозной жизненный цикл машинного обучения, от подготовки данных и обучения до моделирования развертывания в виде автоматизированных рабочих процессов.
Обзор решения
В этом посте основное внимание уделяется преимуществам совместного использования Ray и SageMaker. Мы настроили сквозной рабочий процесс машинного обучения на основе Ray, организованный с помощью SageMaker Pipelines. Рабочий процесс включает в себя параллельную загрузку данных в хранилище объектов с помощью актеров Ray, предварительную обработку данных с помощью Ray Data, обучение моделей и масштабную настройку гиперпараметров с помощью Ray Train и заданий по настройке оптимизации гиперпараметров (HPO), а также, наконец, оценку модели и регистрацию модели в реестр моделей.
Для наших данных мы используем набор данных о синтетическом жилье который состоит из восьми функций (YEAR_BUILT
, SQUARE_FEET
, NUM_BEDROOM
, NUM_BATHROOMS
, LOT_ACRES
, GARAGE_SPACES
, FRONT_PORCH
и DECK
), и наша модель предскажет PRICE
дома.
Каждый этап рабочего процесса машинного обучения разбит на отдельные этапы с собственным сценарием, принимающим входные и выходные параметры. В следующем разделе мы выделим ключевые фрагменты кода каждого шага. Полный код можно найти на сайте Репозиторий aws-samples-for-ray на GitHub.
Предпосылки
Чтобы использовать SageMaker Python SDK и запустить код, связанный с этой публикацией, вам необходимы следующие предварительные условия:
Загрузка данных в хранилище функций SageMaker
Первым шагом в рабочем процессе ML является чтение файла исходных данных из Простой сервис хранения Amazon (Amazon S3) в формате CSV и вставьте его в хранилище функций SageMaker. SageMaker Feature Store — это специально созданный репозиторий, который позволяет командам легко создавать, совместно использовать и управлять функциями машинного обучения. Это упрощает обнаружение, повторное использование и совместное использование функций, что приводит к ускорению разработки, расширению сотрудничества внутри команд клиентов и снижению затрат.
Вставка функций в хранилище функций состоит из следующих шагов:
- Определите группу функций и создайте ее в хранилище функций.
- Подготовьте исходные данные для хранилища объектов, добавив время события и идентификатор записи для каждой строки данных.
- Вставьте подготовленные данные в группу функций с помощью Boto3 SDK.
В этом разделе мы выделяем только Шаг 3, поскольку именно эта часть включает параллельную обработку задачи приема с использованием Ray. Полный код этого процесса можно просмотреть в разделе Репо GitHub.
Ассоциация ingest_features метод определен внутри класса с именем Featurestore
, Обратите внимание, что Featurestore
класс украшен @ray.remote
. Это указывает на то, что экземпляр этого класса является актером Ray, параллельной вычислительной единицей с отслеживанием состояния внутри Ray. Это модель программирования, которая позволяет создавать распределенные объекты, которые поддерживают внутреннее состояние и к которым могут одновременно обращаться несколько задач, выполняющихся на разных узлах кластера Ray. Актеры предоставляют способ управления и инкапсуляции изменяемого состояния, что делает их ценными для создания сложных приложений с отслеживанием состояния в распределенной среде. Вы также можете указать требования к ресурсам в актерах. В этом случае каждый экземпляр FeatureStore
для класса потребуется 0.5 процессора. См. следующий код:
@ray.remote(num_cpus=0.5)
class Featurestore: def ingest_features(self,feature_group_name, df, region): """ Ingest features to Feature Store Group Args: feature_group_name (str): Feature Group Name data_path (str): Path to the train/validation/test data in CSV format. """ ...
Вы можете взаимодействовать с актером, вызвав remote
оператор. В следующем коде желаемое количество актеров передается в качестве входного аргумента сценария. Затем данные секционируются в зависимости от количества участников и передаются удаленным параллельным процессам для загрузки в хранилище функций. Вы можете позвонить get
по ссылке на объект, чтобы заблокировать выполнение текущей задачи до тех пор, пока удаленное вычисление не будет завершено и результат не станет доступен. Когда результат будет доступен, ray.get
вернет результат, и выполнение текущей задачи продолжится.
import modin.pandas as pd
import ray df = pd.read_csv(s3_path)
data = prepare_df_for_feature_store(df)
# Split into partitions
partitions = [ray.put(part) for part in np.array_split(data, num_actors)]
# Start actors and assign partitions in a loop
actors = [Featurestore.remote() for _ in range(args.num_actors)]
results = [] for actor, partition in zip(actors, input_partitions): results.append(actor.ingest_features.remote( args.feature_group_name, partition, args.region ) ) ray.get(results)
Подготовьте данные для обучения, проверки и тестирования.
На этом этапе мы используем Ray Dataset для эффективного разделения, преобразования и масштабирования нашего набора данных при подготовке к машинному обучению. Ray Dataset предоставляет стандартный способ загрузки распределенных данных в Ray, поддерживая различные системы хранения и форматы файлов. Он имеет API для распространенных операций предварительной обработки данных ML, таких как параллельные преобразования, перетасовка, группировка и агрегирование. Ray Dataset также обрабатывает операции, требующие настройки с отслеживанием состояния и ускорения графического процессора. Он легко интегрируется с другими библиотеками обработки данных, такими как Spark, Pandas, NumPy и другими, а также с платформами машинного обучения, такими как TensorFlow и PyTorch. Это позволяет создавать сквозные конвейеры данных и рабочие процессы машинного обучения поверх Ray. Цель — упростить распределенную обработку данных и машинное обучение для практиков и исследователей.
Давайте рассмотрим разделы скриптов, выполняющих эту предварительную обработку данных. Начнем с загрузки данных из хранилища объектов:
def load_dataset(feature_group_name, region): """ Loads the data as a ray dataset from the offline featurestore S3 location Args: feature_group_name (str): name of the feature group Returns: ds (ray.data.dataset): Ray dataset the contains the requested dat from the feature store """ session = sagemaker.Session(boto3.Session(region_name=region)) fs_group = FeatureGroup( name=feature_group_name, sagemaker_session=session ) fs_data_loc = fs_group.describe().get("OfflineStoreConfig").get("S3StorageConfig").get("ResolvedOutputS3Uri") # Drop columns added by the feature store # Since these are not related to the ML problem at hand cols_to_drop = ["record_id", "event_time","write_time", "api_invocation_time", "is_deleted", "year", "month", "day", "hour"] ds = ray.data.read_parquet(fs_data_loc) ds = ds.drop_columns(cols_to_drop) print(f"{fs_data_loc} count is {ds.count()}") return ds
Затем мы разделяем и масштабируем данные, используя абстракции более высокого уровня, доступные в ray.data
библиотека:
def split_dataset(dataset, train_size, val_size, test_size, random_state=None): """ Split dataset into train, validation and test samples Args: dataset (ray.data.Dataset): input data train_size (float): ratio of data to use as training dataset val_size (float): ratio of data to use as validation dataset test_size (float): ratio of data to use as test dataset random_state (int): Pass an int for reproducible output across multiple function calls. Returns: train_set (ray.data.Dataset): train dataset val_set (ray.data.Dataset): validation dataset test_set (ray.data.Dataset): test dataset """ # Shuffle this dataset with a fixed random seed. shuffled_ds = dataset.random_shuffle(seed=random_state) # Split the data into train, validation and test datasets train_set, val_set, test_set = shuffled_ds.split_proportionately([train_size, val_size]) return train_set, val_set, test_set def scale_dataset(train_set, val_set, test_set, target_col): """ Fit StandardScaler to train_set and apply it to val_set and test_set Args: train_set (ray.data.Dataset): train dataset val_set (ray.data.Dataset): validation dataset test_set (ray.data.Dataset): test dataset target_col (str): target col Returns: train_transformed (ray.data.Dataset): train data scaled val_transformed (ray.data.Dataset): val data scaled test_transformed (ray.data.Dataset): test data scaled """ tranform_cols = dataset.columns() # Remove the target columns from being scaled tranform_cols.remove(target_col) # set up a standard scaler standard_scaler = StandardScaler(tranform_cols) # fit scaler to training dataset print("Fitting scaling to training data and transforming dataset...") train_set_transformed = standard_scaler.fit_transform(train_set) # apply scaler to validation and test datasets print("Transforming validation and test datasets...") val_set_transformed = standard_scaler.transform(val_set) test_set_transformed = standard_scaler.transform(test_set) return train_set_transformed, val_set_transformed, test_set_transformed
Обработанные наборы данных поезда, проверки и тестирования хранятся в Amazon S3 и будут передаваться в качестве входных параметров на последующие этапы.
Выполнение обучения модели и оптимизации гиперпараметров.
Когда наши данные предварительно обработаны и готовы к моделированию, пришло время обучить некоторые модели машинного обучения и точно настроить их гиперпараметры, чтобы максимизировать эффективность прогнозирования. Мы используем XGBoost-Ray, распределенный бэкэнд для XGBoost, созданный на основе Ray, который позволяет обучать модели XGBoost на больших наборах данных с использованием нескольких узлов и графических процессоров. Он обеспечивает простую замену API-интерфейсов XGBoost для обучения и прогнозирования, одновременно справляясь со сложностями управления распределенными данными и обучения под капотом.
Чтобы обеспечить распределение обучения по нескольким узлам, мы используем вспомогательный класс с именем РэйХелпер. Как показано в следующем коде, мы используем конфигурацию ресурсов задания обучения и выбираем первый хост в качестве головного узла:
class RayHelper(): def __init__(self, ray_port:str="9339", redis_pass:str="redis_password"): .... self.resource_config = self.get_resource_config() self.head_host = self.resource_config["hosts"][0] self.n_hosts = len(self.resource_config["hosts"])
Мы можем использовать информацию о хосте, чтобы решить, как инициализировать Ray в каждом экземпляре обучающего задания:
def start_ray(self): head_ip = self._get_ip_from_host() # If the current host is the host choosen as the head node # run `ray start` with specifying the --head flag making this is the head node if self.resource_config["current_host"] == self.head_host: output = subprocess.run(['ray', 'start', '--head', '-vvv', '--port', self.ray_port, '--redis-password', self.redis_pass, '--include-dashboard', 'false'], stdout=subprocess.PIPE) print(output.stdout.decode("utf-8")) ray.init(address="auto", include_dashboard=False) self._wait_for_workers() print("All workers present and accounted for") print(ray.cluster_resources()) else: # If the current host is not the head node, # run `ray start` with specifying ip address as the head_host as the head node time.sleep(10) output = subprocess.run(['ray', 'start', f"--address={head_ip}:{self.ray_port}", '--redis-password', self.redis_pass, "--block"], stdout=subprocess.PIPE) print(output.stdout.decode("utf-8")) sys.exit(0)
Когда запускается задание обучения, кластер Ray можно инициализировать, вызвав метод start_ray()
метод на экземпляре RayHelper
:
if __name__ == '__main__': ray_helper = RayHelper() ray_helper.start_ray() args = read_parameters() sess = sagemaker.Session(boto3.Session(region_name=args.region))
Затем мы используем для обучения трейнер XGBoost от XGBoost-Ray:
def train_xgboost(ds_train, ds_val, params, num_workers, target_col = "price") -> Result: """ Creates a XGBoost trainer, train it, and return the result. Args: ds_train (ray.data.dataset): Training dataset ds_val (ray.data.dataset): Validation dataset params (dict): Hyperparameters num_workers (int): number of workers to distribute the training across target_col (str): target column Returns: result (ray.air.result.Result): Result of the training job """ train_set = RayDMatrix(ds_train, 'PRICE') val_set = RayDMatrix(ds_val, 'PRICE') evals_result = {} trainer = train( params=params, dtrain=train_set, evals_result=evals_result, evals=[(val_set, "validation")], verbose_eval=False, num_boost_round=100, ray_params=RayParams(num_actors=num_workers, cpus_per_actor=1), ) output_path=os.path.join(args.model_dir, 'model.xgb') trainer.save_model(output_path) valMAE = evals_result["validation"]["mae"][-1] valRMSE = evals_result["validation"]["rmse"][-1] print('[3] #011validation-mae:{}'.format(valMAE)) print('[4] #011validation-rmse:{}'.format(valRMSE)) local_testing = False try: load_run(sagemaker_session=sess) except: local_testing = True if not local_testing: # Track experiment if using SageMaker Training with load_run(sagemaker_session=sess) as run: run.log_metric('validation-mae', valMAE) run.log_metric('validation-rmse', valRMSE)
Обратите внимание, что при создании экземпляра trainer
, мы проходим RayParams
, который принимает количество актеров и количество процессоров на каждого актера. XGBoost-Ray использует эту информацию для распределения обучения по всем узлам, подключенным к кластеру Ray.
Теперь мы создаем объект оценки XGBoost на основе SageMaker Python SDK и используем его для задания HPO.
Организуйте предыдущие шаги с помощью конвейеров SageMaker.
Чтобы построить сквозной масштабируемый и многократно используемый рабочий процесс машинного обучения, нам нужно использовать инструмент CI/CD для организации предыдущих шагов в конвейер. SageMaker Pipelines напрямую интегрируется с SageMaker, SageMaker Python SDK и SageMaker Studio. Эта интеграция позволяет создавать рабочие процессы машинного обучения с помощью простого в использовании Python SDK, а затем визуализировать рабочий процесс и управлять им с помощью SageMaker Studio. Вы также можете отслеживать историю ваших данных в ходе выполнения конвейера и назначать шаги для кэширования.
SageMaker Pipelines создает направленный ациклический граф (DAG), который включает шаги, необходимые для построения рабочего процесса машинного обучения. Каждый конвейер представляет собой серию взаимосвязанных шагов, организованных зависимостями данных между шагами, и может быть параметризован, что позволяет вам предоставлять входные переменные в качестве параметров для каждого запуска конвейера. SageMaker Pipelines имеет четыре типа параметров конвейера: ParameterString
, ParameterInteger
, ParameterFloat
и ParameterBoolean
. В этом разделе мы параметризуем некоторые входные переменные и настраиваем конфигурацию кэширования шагов:
processing_instance_count = ParameterInteger( name='ProcessingInstanceCount', default_value=1
)
feature_group_name = ParameterString( name='FeatureGroupName', default_value='fs-ray-synthetic-housing-data'
)
bucket_prefix = ParameterString( name='Bucket_Prefix', default_value='aws-ray-mlops-workshop/feature-store'
)
rmse_threshold = ParameterFloat(name="RMSEThreshold", default_value=15000.0) train_size = ParameterString( name='TrainSize', default_value="0.6"
)
val_size = ParameterString( name='ValidationSize', default_value="0.2"
)
test_size = ParameterString( name='TestSize', default_value="0.2"
) cache_config = CacheConfig(enable_caching=True, expire_after="PT12H")
Мы определяем два этапа обработки: один для приема данных из хранилища функций SageMaker, другой для подготовки данных. Это должно выглядеть очень похоже на предыдущие шаги, описанные ранее. Единственная новая строка кода — это ProcessingStep
после определения шагов, что позволяет нам взять конфигурацию задания обработки и включить ее в качестве шага конвейера. Далее мы указываем зависимость этапа подготовки данных от этапа приема SageMaker Feature Store. См. следующий код:
feature_store_ingestion_step = ProcessingStep( name='FeatureStoreIngestion', step_args=fs_processor_args, cache_config=cache_config
) preprocess_dataset_step = ProcessingStep( name='PreprocessData', step_args=processor_args, cache_config=cache_config
)
preprocess_dataset_step.add_depends_on([feature_store_ingestion_step])
Аналогично, чтобы построить этап обучения и настройки модели, нам нужно добавить определение TuningStep
после кода шага обучения модели, чтобы мы могли запустить настройку гиперпараметров SageMaker в качестве шага конвейера:
tuning_step = TuningStep( name="HPTuning", tuner=tuner, inputs={ "train": TrainingInput( s3_data=preprocess_dataset_step.properties.ProcessingOutputConfig.Outputs[ "train" ].S3Output.S3Uri, content_type="text/csv" ), "validation": TrainingInput( s3_data=preprocess_dataset_step.properties.ProcessingOutputConfig.Outputs[ "validation" ].S3Output.S3Uri, content_type="text/csv" ) }, cache_config=cache_config,
)
tuning_step.add_depends_on([preprocess_dataset_step])
После этапа настройки мы решаем зарегистрировать лучшую модель в реестре моделей SageMaker. Чтобы контролировать качество модели, мы реализуем минимальный шлюз качества, который сравнивает объективную метрику лучшей модели (RMSE) с порогом, определенным как входной параметр конвейера. rmse_threshold
. Чтобы выполнить эту оценку, мы создаем еще один этап обработки для запуска сценарий оценки. Результат оценки модели будет сохранен в виде файла свойств. Файлы свойств особенно полезны при анализе результатов шага обработки, чтобы решить, как следует выполнять другие шаги. См. следующий код:
# Specify where we'll store the model evaluation results so that other steps can access those results
evaluation_report = PropertyFile( name='EvaluationReport', output_name='evaluation', path='evaluation.json',
) # A ProcessingStep is used to evaluate the performance of a selected model from the HPO step. # In this case, the top performing model is evaluated. evaluation_step = ProcessingStep( name='EvaluateModel', processor=evaluation_processor, inputs=[ ProcessingInput( source=tuning_step.get_top_model_s3_uri( top_k=0, s3_bucket=bucket, prefix=s3_prefix ), destination='/opt/ml/processing/model', ), ProcessingInput( source=preprocess_dataset_step.properties.ProcessingOutputConfig.Outputs['test'].S3Output.S3Uri, destination='/opt/ml/processing/test', ), ], outputs=[ ProcessingOutput( output_name='evaluation', source='/opt/ml/processing/evaluation' ), ], code='./pipeline_scripts/evaluate/script.py', property_files=[evaluation_report],
)
Мы определяем ModelStep
зарегистрировать лучшую модель в реестре моделей SageMaker в нашем конвейере. В случае, если лучшая модель не проходит заданную нами проверку качества, мы дополнительно указываем FailStep
для вывода сообщения об ошибке:
register_step = ModelStep( name='RegisterTrainedModel', step_args=model_registry_args
) metrics_fail_step = FailStep( name="RMSEFail", error_message=Join(on=" ", values=["Execution failed due to RMSE >", rmse_threshold]),
)
Далее мы используем ConditionStep
чтобы оценить, следует ли предпринять следующий шаг в конвейере: шаг регистрации модели или шаг отказа. В нашем случае лучшая модель будет зарегистрирована, если ее показатель RMSE ниже порогового значения.
# Condition step for evaluating model quality and branching execution
cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=evaluation_step.name, property_file=evaluation_report, json_path='regression_metrics.rmse.value', ), right=rmse_threshold,
)
condition_step = ConditionStep( name='CheckEvaluation', conditions=[cond_lte], if_steps=[register_step], else_steps=[metrics_fail_step],
)
Наконец, мы объединяем все определенные шаги в конвейер:
pipeline_name = 'synthetic-housing-training-sm-pipeline-ray'
step_list = [ feature_store_ingestion_step, preprocess_dataset_step, tuning_step, evaluation_step, condition_step ] training_pipeline = Pipeline( name=pipeline_name, parameters=[ processing_instance_count, feature_group_name, train_size, val_size, test_size, bucket_prefix, rmse_threshold ], steps=step_list
) # Note: If an existing pipeline has the same name it will be overwritten.
training_pipeline.upsert(role_arn=role_arn)
Предыдущий конвейер можно визуализировать и выполнить непосредственно в SageMaker Studio или выполнить, вызвав execution = training_pipeline.start()
. На следующем рисунке показан поток конвейера.
Кроме того, мы можем просмотреть происхождение артефактов, созданных при выполнении конвейера.
from sagemaker.lineage.visualizer import LineageTableVisualizer viz = LineageTableVisualizer(sagemaker.session.Session())
for execution_step in reversed(execution.list_steps()): print(execution_step) display(viz.show(pipeline_execution_step=execution_step)) time.sleep(5)
Развернуть модель
После того как лучшая модель зарегистрирована в реестре моделей SageMaker посредством запуска конвейера, мы развертываем модель на конечной точке в реальном времени, используя полностью управляемые возможности развертывания модели SageMaker. В SageMaker есть другие варианты развертывания моделей для удовлетворения потребностей различных сценариев использования. Подробности см. Развертывание моделей для вывода при выборе правильного варианта для вашего случая использования. Сначала давайте зарегистрируем модель в реестре моделей SageMaker:
xgb_regressor_model = ModelPackage( role_arn, model_package_arn=model_package_arn, name=model_name
)
Текущий статус модели PendingApproval
. Нам нужно установить его статус Approved
до развертывания:
sagemaker_client.update_model_package( ModelPackageArn=xgb_regressor_model.model_package_arn, ModelApprovalStatus='Approved'
) xgb_regressor_model.deploy( initial_instance_count=1, instance_type='ml.m5.xlarge', endpoint_name=endpoint_name
)
Убирать
После завершения экспериментов не забудьте очистить ресурсы, чтобы избежать ненужных расходов. Чтобы очистить, удалите конечную точку реального времени, группу моделей, конвейер и группу функций, вызвав API. Удалить конечную точку, УдалитьМодельПакажеГрупп, Удалить конвейери Удалить группу объектовсоответственно, и завершите работу всех экземпляров блокнотов SageMaker Studio.
Заключение
В этом посте продемонстрировано пошаговое руководство по использованию конвейеров SageMaker для организации рабочих процессов машинного обучения на основе Ray. Мы также продемонстрировали возможность интеграции SageMaker Pipelines со сторонними инструментами машинного обучения. Существуют различные сервисы AWS, которые поддерживают рабочие нагрузки Ray масштабируемым и безопасным способом, обеспечивая превосходную производительность и эффективность работы. Теперь ваша очередь изучить эти мощные возможности и начать оптимизировать рабочие процессы машинного обучения с помощью Amazon SageMaker Pipelines и Ray. Примите меры сегодня и раскройте весь потенциал своих проектов машинного обучения!
Об авторе
Раджу Ранган — старший архитектор решений в Amazon Web Services (AWS). Он работает с организациями, спонсируемыми государством, помогая им создавать решения AI/ML с использованием AWS. Когда он не возится с облачными решениями, вы застанете его гуляющим с семьей или разбивающим птичек в оживленной игре в бадминтон с друзьями.
Шерри Дин является старшим архитектором решений AI/ML в Amazon Web Services (AWS). Она имеет большой опыт в области машинного обучения и имеет степень доктора компьютерных наук. В основном она работает с клиентами из государственного сектора над различными бизнес-задачами, связанными с искусственным интеллектом и машинным обучением, помогая им ускорить процесс машинного обучения в облаке AWS. Когда она не помогает клиентам, она любит активный отдых.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Смещения блоков. Модернизация права собственности на экологические компенсации. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/orchestrate-ray-based-machine-learning-workflows-using-amazon-sagemaker/
- :имеет
- :является
- :нет
- :куда
- $UP
- 10
- 100
- 7
- a
- рефераты
- ускорять
- ускоренный
- доступ
- Доступ
- составили
- через
- Действие
- активно
- актеры
- ациклический
- Добавить
- добавленный
- добавить
- Дополнительно
- адрес
- После
- против
- AI
- AI / ML
- AIR
- Все
- позволять
- Позволяющий
- позволяет
- причислены
- Несмотря на то, что
- Amazon
- Создатель мудреца Амазонки
- Конвейеры Amazon SageMaker
- Amazon Web Services
- Веб-службы Amazon (AWS)
- an
- анализ
- и
- Другой
- API
- Приложения
- Применить
- утвержденный
- МЫ
- аргумент
- AS
- связанный
- At
- автоматический
- Автоматизированный
- доступен
- избежать
- прочь
- AWS
- Backend
- Балансировка
- основанный
- BE
- , так как:
- становление
- не являетесь
- Преимущества
- ЛУЧШЕЕ
- между
- Заблокировать
- изоферменты печени
- Сломанный
- строить
- Строительство
- построенный
- бизнес
- by
- призывают
- под названием
- вызова
- Объявления
- CAN
- возможности
- возможности
- случаев
- случаев
- Привлекайте
- проблемы
- сложные
- расходы
- проверка
- Выберите
- Выбирая
- класс
- облако
- Кластер
- код
- сотрудничество
- Column
- Колонки
- сочетание
- Общий
- полный
- комплекс
- сложности
- сложность
- вычисление
- компьютер
- Информатика
- вычисление
- параллельный
- состояние
- Конфигурация
- состоит
- содержит
- продолжать
- контроль
- Расходы
- Создайте
- создает
- Текущий
- клиент
- Клиенты
- DAG
- данным
- управление данными
- Подготовка данных
- обработка данных
- Наборы данных
- день
- решать
- определять
- определенный
- определение
- Степень
- убивают
- Зависимости
- Зависимость
- развертывание
- развертывание
- развертывание
- описано
- желанный
- подробнее
- развивающийся
- Развитие
- ДИКТ
- различный
- направлять
- направленный
- непосредственно
- открытие
- обсуждать
- распространять
- распределенный
- распределенных вычислений
- распределенное обучение
- распределение
- do
- не
- сделанный
- вниз
- Падение
- два
- каждый
- Ранее
- легче
- легко
- Простой в использовании
- фактически
- затрат
- эффективный
- эффективно
- еще
- включить
- позволяет
- впритык
- Конечная точка
- Инженеры
- расширение
- обеспечивать
- лиц
- ошибка
- оценивать
- оценивается
- оценки
- оценка
- События
- Превосходство
- Кроме
- выполненный
- выполнение
- существующий
- опыт
- эксперимент
- Больше
- обширный
- Богатый опыт
- Oшибка
- Ошибка
- ложный
- семья
- Фэшн
- быстрее
- неисправности
- Особенность
- Особенности
- FeatureStore
- фигура
- Файл
- Файлы
- в заключение
- Во-первых,
- соответствовать
- примерка
- фиксированной
- гибкого
- Поплавок
- поток
- фокусируется
- после
- Что касается
- формат
- найденный
- 4
- Рамки
- каркасы
- трение
- друзья
- от
- полный
- полностью
- функция
- далее
- игра
- генерируется
- получить
- GitHub
- цель
- будет
- управление
- Правительство
- правительство спонсирует
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- Графические процессоры
- график
- группы
- инструкция
- рука
- обрабатывать
- Ручки
- Управляемость
- Аппаратные средства
- Есть
- he
- помощь
- Выделите
- Выделенные
- его
- история
- капот
- кашель
- хостов
- час
- Вилла / Бунгало
- жилье
- Как
- How To
- HTML
- HTTPS
- Оптимизация гиперпараметра
- Настройка гиперпараметра
- ID
- if
- иллюстрирует
- осуществлять
- Импортировать
- улучшенный
- in
- включают
- включает в себя
- расширились
- все больше и больше
- указывает
- информация
- Инфраструктура
- вход
- внутри
- пример
- интегрировать
- Интегрируется
- интеграции.
- взаимодействовать
- взаимосвязано
- в нашей внутренней среде,
- в
- IP
- IP-адрес
- IT
- ЕГО
- работа
- Джобс
- путешествие
- JPG
- JSON
- хранение
- Основные
- портативный компьютер
- большой
- ведущий
- Лиды
- изучение
- библиотеки
- Библиотека
- Жизненный цикл
- такое как
- линия
- происхождение
- ll
- загрузка
- погрузка
- грузы
- расположение
- посмотреть
- ниже
- машина
- обучение с помощью машины
- Продукция
- в основном
- поддерживать
- сделать
- ДЕЛАЕТ
- Создание
- управлять
- управляемого
- управление
- вручную
- Максимизировать
- Встречайте
- сообщение
- метод
- метрический
- минимальный
- ML
- модель
- моделирование
- Модели
- Месяц
- БОЛЕЕ
- с разными
- должен
- имя
- Названный
- Необходимость
- необходимый
- нуждающихся
- потребности
- Новые
- следующий
- узел
- узлы
- ноутбук
- сейчас
- номер
- NumPy
- объект
- цель
- объекты
- of
- оффлайн
- .
- on
- ONE
- только
- с открытым исходным кодом
- оперативный
- Операционный отдел
- оператор
- оптимизация
- оптимизирующий
- Опция
- Опции
- or
- организовал
- Другое
- наши
- внешний
- выходной
- за
- собственный
- панд
- Параллельные
- параметр
- параметры
- часть
- особенно
- pass
- Прошло
- путь
- для
- Выполнять
- производительность
- выполнения
- кандидат наук
- труба
- трубопровод
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- После
- потенциал
- мощный
- предсказывать
- подготовка
- подготовленный
- предпосылки
- представить
- предыдущий
- цена
- Предварительный
- Проблема
- проблемам
- процесс
- Обработанный
- Процессы
- обработка
- Производство
- Программирование
- свойства
- собственность
- обеспечивать
- приводит
- что такое варган?
- Питон
- pytorch
- случайный
- быстро
- соотношение
- RAY
- Читать
- готовый
- реального времени
- запись
- Цена снижена
- снижает
- относиться
- область
- зарегистрироваться
- зарегистрированный
- регистрирующий
- Регистрация
- реестра
- Связанный
- складская
- помнить
- удаленные
- удаление
- хранилище
- требовать
- Требования
- исследователи
- ресурс
- Полезные ресурсы
- соответственно
- результат
- Итоги
- возвращают
- Возвращает
- многоразовый
- снова использовать
- обзоре
- правую
- РЯД
- Run
- Бег
- sagemaker
- Конвейеры SageMaker
- то же
- Масштабируемость
- масштабируемые
- Шкала
- масштабирование
- планирование
- Наука
- Ученые
- Гол
- скрипт
- скрипты
- SDK
- легко
- Раздел
- разделах
- сектор
- безопасный
- посмотреть
- семя
- выбранный
- SELF
- старший
- Серии
- обслуживание
- Услуги
- выступающей
- Сессия
- набор
- установка
- установка
- Поделиться
- разделение
- она
- должен
- показанный
- перемешивание
- выключать
- значительный
- аналогичный
- просто
- упростить
- с
- одинарной
- плавно
- So
- Решения
- РЕШАТЬ
- некоторые
- Источник
- Искриться
- специалист
- раскол
- Спонсоров
- Этап
- стандарт
- Начало
- и политические лидеры
- Область
- Статус:
- Шаг
- Шаги
- диск
- магазин
- хранить
- хранение
- студия
- последующее
- такие
- поддержка
- поддержки
- синтетический
- SYS
- система
- системы
- взять
- приняты
- принимает
- цель
- Сложность задачи
- задачи
- команды
- tensorflow
- тестXNUMX
- чем
- который
- Ассоциация
- Источник
- их
- Их
- тогда
- Там.
- Эти
- сторонние
- этой
- те
- порог
- Через
- время
- раз
- в
- сегодня
- вместе
- терпимость
- слишком
- инструментом
- инструменты
- топ
- трек
- Train
- Обучение
- Transform
- преобразований
- превращение
- испытания
- правда
- стараться
- ОЧЕРЕДЬ
- два
- Типы
- под
- Ед. изм
- отпереть
- ненужный
- до
- us
- использование
- прецедент
- используемый
- использования
- через
- использовать
- Проверка
- ценный
- ценностное
- различный
- очень
- с помощью
- визуализации
- прохождение
- Путь..
- we
- Web
- веб-сервисы
- ЧТО Ж
- когда
- будь то
- который
- в то время как
- будете
- в
- рабочие
- рабочий
- Рабочие процессы
- работает
- XGBoost
- год
- Ты
- ВАШЕ
- зефирнет