Amazon SageMaker를 사용하여 Ray 기반 기계 학습 워크플로 조정 | 아마존 웹 서비스

Amazon SageMaker를 사용하여 Ray 기반 기계 학습 워크플로 조정 | 아마존 웹 서비스

고객이 점점 더 어려운 문제를 해결하려고 함에 따라 기계 학습(ML)은 점점 더 복잡해지고 있습니다. 이러한 복잡성으로 인해 단일 모델을 교육하는 데 여러 시스템이 사용되는 분산 ML이 필요한 경우가 많습니다. 이를 통해 여러 노드에 걸쳐 작업을 병렬화할 수 있어 훈련 시간이 단축되고 확장성이 향상되며 성능이 향상되지만 분산 하드웨어를 효과적으로 사용하는 데는 상당한 과제가 있습니다. 데이터 과학자는 데이터 분할, 로드 밸런싱, 내결함성, 확장성과 같은 문제를 해결해야 합니다. ML 엔지니어는 복잡한 인프라 코드가 필요한 병렬화, 예약, 오류 및 재시도를 수동으로 처리해야 합니다.

이번 포스팅에서는 사용 시의 이점에 대해 설명합니다. 레이아마존 세이지 메이커 분산 ML을 위해 이러한 프레임워크를 사용하여 확장 가능한 ML 워크플로를 구축하고 배포하는 방법에 대한 단계별 가이드를 제공합니다.

오픈 소스 분산 컴퓨팅 프레임워크인 Ray는 ML 모델의 분산 학습 및 제공을 위한 유연한 프레임워크를 제공합니다. 데이터 전처리, 분산 훈련, 하이퍼파라미터 튜닝, 강화 학습, 모델 제공과 같은 일반적인 ML 작업을 위한 간단하고 확장 가능한 라이브러리를 통해 낮은 수준의 분산 시스템 세부 정보를 추상화합니다.

SageMaker는 ML 모델 구축, 교육 및 배포를 위한 완전관리형 서비스입니다. Ray는 SageMaker 기능과 원활하게 통합되어 효율적이고 안정적인 복잡한 ML 워크로드를 구축하고 배포합니다. Ray와 SageMaker의 조합은 확장 가능한 ML 워크플로를 위한 엔드투엔드 기능을 제공하며 다음과 같은 주요 기능을 제공합니다.

  • Ray의 분산 액터 및 병렬성 구성은 분산 애플리케이션 개발을 단순화합니다.
  • AIR(Ray AI Runtime)는 개발에서 생산으로 진행하는 데 따른 마찰을 줄입니다. Ray와 AIR를 사용하면 동일한 Python 코드를 노트북에서 대규모 클러스터로 원활하게 확장할 수 있습니다.
  • SageMaker의 관리형 인프라와 처리 작업, 훈련 작업, 하이퍼파라미터 튜닝 작업과 같은 기능은 분산 컴퓨팅을 위해 아래에서 Ray 라이브러리를 사용할 수 있습니다.
  • Amazon SageMaker 실험 시험을 빠르게 반복하고 추적할 수 있습니다.
  • Amazon SageMaker 기능 스토어 모델 훈련을 위한 ML 기능을 저장, 검색 및 공유하기 위한 확장 가능한 리포지토리를 제공합니다.
  • 훈련된 모델은 다음 위치에 저장, 버전 관리 및 추적될 수 있습니다. Amazon SageMaker 모델 레지스트리 거버넌스 및 관리를 위해.
  • Amazon SageMaker 파이프 라인 데이터 준비 및 교육부터 모델 배포까지 자동화된 워크플로로 엔드투엔드 ML 수명주기를 조정할 수 있습니다.

솔루션 개요

이 게시물에서는 Ray와 SageMaker를 함께 사용할 때의 이점에 중점을 둡니다. 우리는 SageMaker 파이프라인을 사용하여 조정된 엔드투엔드 Ray 기반 ML 워크플로를 설정했습니다. 워크플로우에는 Ray Actor를 사용하여 특성 저장소에 데이터를 병렬로 수집하고, Ray Data를 사용한 데이터 전처리, Ray Train 및 하이퍼파라미터 최적화(HPO) 튜닝 작업을 사용하여 규모에 맞게 모델 훈련 및 하이퍼파라미터 튜닝, 마지막으로 모델 평가 및 모델을 모델 레지스트리.

데이터의 경우 다음을 사용합니다. 합성 주택 데이터세트 XNUMX가지 기능으로 구성되어 있습니다(YEAR_BUILT, SQUARE_FEET, NUM_BEDROOM, NUM_BATHROOMS, LOT_ACRES, GARAGE_SPACES, FRONT_PORCHDECK) 그리고 우리 모델은 PRICE 집에 대해서.

ML 워크플로의 각 단계는 입력 및 출력 매개변수를 사용하는 자체 스크립트를 사용하여 개별 단계로 구분됩니다. 다음 섹션에서는 각 단계의 주요 코드 조각을 강조합니다. 전체 코드는 다음에서 확인할 수 있습니다. aws-samples-for-ray GitHub 리포지토리.

사전 조건

SageMaker Python SDK를 사용하고 이 게시물과 관련된 코드를 실행하려면 다음 전제 조건이 필요합니다.

SageMaker Feature Store에 데이터 수집

ML 워크플로의 첫 번째 단계는 소스 데이터 파일을 읽는 것입니다. 아마존 단순 스토리지 서비스 (Amazon S3)을 CSV 형식으로 변환하여 SageMaker Feature Store에 수집합니다. SageMaker Feature Store는 팀이 ML 기능을 쉽게 생성, 공유 및 관리할 수 있도록 특별히 구축된 리포지토리입니다. 기능 검색, 재사용 및 공유를 단순화하여 개발 속도를 높이고 고객 팀 내 협업을 늘리며 비용을 절감합니다.

특성 저장소에 특성을 수집하는 단계는 다음과 같습니다.

  1. 기능 그룹을 정의하고 기능 저장소에 기능 그룹을 만듭니다.
  2. 각 데이터 행에 대한 이벤트 시간과 레코드 ID를 추가하여 특성 저장소에 대한 원본 데이터를 준비합니다.
  3. Boto3 SDK를 사용하여 준비된 데이터를 기능 그룹에 수집합니다.

이 섹션에서는 3단계만 강조합니다. 이는 Ray를 사용하여 수집 작업을 병렬 처리하는 부분이기 때문입니다. 이 프로세스의 전체 코드는 다음에서 검토할 수 있습니다. GitHub 레포.

XNUMXD덴탈의 수집_기능 메소드는 다음과 같은 클래스 내부에 정의됩니다. Featurestore. 참고로 Featurestore 수업은 장식되어 있습니다 @ray.remote. 이는 이 클래스의 인스턴스가 Ray 내의 상태 저장 및 동시 계산 단위인 Ray 행위자임을 나타냅니다. 내부 상태를 유지하고 Ray 클러스터의 서로 다른 노드에서 실행되는 여러 작업에서 동시에 액세스할 수 있는 분산 객체를 생성할 수 있는 프로그래밍 모델입니다. 액터는 변경 가능한 상태를 관리하고 캡슐화하는 방법을 제공하여 분산 설정에서 복잡하고 상태가 있는 애플리케이션을 구축하는 데 유용합니다. 액터에서도 리소스 요구 사항을 지정할 수 있습니다. 이 경우, 각 인스턴스의 FeatureStore 클래스에는 0.5개의 CPU가 필요합니다. 다음 코드를 참조하세요.

@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에 로드하는 표준 방법을 제공하여 다양한 스토리지 시스템과 파일 형식을 지원합니다. 병렬 변환, 셔플링, 그룹화, 집계와 같은 일반적인 ML 데이터 전처리 작업을 위한 API가 있습니다. Ray Dataset은 상태 저장 설정 및 GPU 가속이 필요한 작업도 처리합니다. Spark, Pandas, NumPy 등과 같은 다른 데이터 처리 라이브러리는 물론 TensorFlow 및 PyTorch와 같은 ML 프레임워크와 원활하게 통합됩니다. 이를 통해 Ray 위에 엔드투엔드 데이터 파이프라인과 ML 워크플로를 구축할 수 있습니다. 목표는 실무자와 연구자가 분산 데이터 처리와 ML을 더 쉽게 만드는 것입니다.

이 데이터 전처리를 수행하는 스크립트 섹션을 살펴보겠습니다. 먼저 특성 저장소에서 데이터를 로드합니다.

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에 저장되며 후속 단계에 입력 매개변수로 전달됩니다.

모델 훈련 및 하이퍼파라미터 최적화 수행

데이터가 전처리되어 모델링 준비가 되었으므로 이제 일부 ML 모델을 훈련하고 하이퍼파라미터를 미세 조정하여 예측 성능을 극대화할 차례입니다. 우리는 사용 XGBoost-Ray, 여러 노드와 GPU를 사용하여 대규모 데이터 세트에서 XGBoost 모델을 훈련할 수 있는 Ray 기반 XGBoost용 분산 백엔드입니다. XGBoost의 학습 및 예측 API에 대한 간단한 드롭인 대체 기능을 제공하는 동시에 내부적으로 분산 데이터 관리 및 학습의 복잡성을 처리합니다.

여러 노드에 훈련을 배포할 수 있도록 도우미 클래스를 활용합니다. 레이헬퍼. 다음 코드에 표시된 것처럼 훈련 작업의 리소스 구성을 사용하고 첫 번째 호스트를 헤드 노드로 선택합니다.

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-Ray의 XGBoost 트레이너를 사용합니다.

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, 액터 수와 액터당 CPU 수를 가져옵니다. XGBoost-Ray는 이 정보를 사용하여 Ray 클러스터에 연결된 모든 노드에 교육을 배포합니다.

이제 SageMaker Python SDK를 기반으로 XGBoost 추정기 객체를 생성하고 이를 HPO 작업에 사용합니다.

SageMaker 파이프라인을 사용하여 이전 단계 조정

확장 가능하고 재사용 가능한 엔드투엔드 ML 워크플로를 구축하려면 CI/CD 도구를 사용하여 이전 단계를 파이프라인으로 조정해야 합니다. SageMaker 파이프라인은 SageMaker, SageMaker Python SDK 및 SageMaker Studio와 직접 통합됩니다. 이 통합을 통해 사용하기 쉬운 Python SDK로 ML 워크플로를 생성한 다음 SageMaker Studio를 사용하여 워크플로를 시각화하고 관리할 수 있습니다. 또한 파이프라인 실행 내에서 데이터 기록을 추적하고 캐싱 단계를 지정할 수도 있습니다.

SageMaker 파이프라인은 ML 워크플로를 구축하는 데 필요한 단계가 포함된 DAG(방향성 비순환 그래프)를 생성합니다. 각 파이프라인은 단계 간의 데이터 종속성에 따라 조정되는 일련의 상호 연결된 단계이며 매개변수화될 수 있으므로 파이프라인의 각 실행에 대해 입력 변수를 매개변수로 제공할 수 있습니다. SageMaker 파이프라인에는 네 가지 유형의 파이프라인 매개변수가 있습니다. ParameterString, ParameterInteger, ParameterFloatParameterBoolean. 이 섹션에서는 일부 입력 변수를 매개변수화하고 단계 캐싱 구성을 설정합니다.

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 Feature Store 수집을 위한 것이고, 다른 하나는 데이터 준비를 위한 것입니다. 이는 앞에서 설명한 이전 단계와 매우 유사해 보입니다. 유일한 새로운 코드 줄은 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(). 다음 그림은 파이프라인 흐름을 보여줍니다.

SageMaker 파이프라인 DAG

또한 파이프라인 실행으로 생성된 아티팩트의 계보를 검토할 수 있습니다.

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 기반 ML 워크플로를 조정하는 방법에 대한 단계별 연습을 시연했습니다. 또한 타사 ML 도구와 통합할 수 있는 SageMaker 파이프라인의 기능도 시연했습니다. 성능 우수성과 운영 효율성을 보장하기 위해 확장 가능하고 안전한 방식으로 Ray 워크로드를 지원하는 다양한 AWS 서비스가 있습니다. 이제 이러한 강력한 기능을 살펴보고 Amazon SageMaker Pipelines 및 Ray를 사용하여 기계 학습 워크플로 최적화를 시작할 차례입니다. 지금 바로 조치를 취하고 ML 프로젝트의 잠재력을 최대한 활용해 보세요!


저자에 관하여

Amazon SageMaker를 사용하여 Ray 기반 기계 학습 워크플로 조정 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.라주 랑간 Amazon Web Services(AWS)의 수석 솔루션 아키텍트입니다. 그는 정부 후원 기관과 협력하여 AWS를 사용하여 AI/ML 솔루션을 구축하도록 돕습니다. 클라우드 솔루션을 만지작거리지 않을 때는 가족과 함께 어울리거나 친구들과 활기찬 배드민턴 경기에서 버디를 치는 모습을 볼 수 있습니다.

Amazon SageMaker를 사용하여 Ray 기반 기계 학습 워크플로 조정 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.셰리 딩 Amazon Web Services(AWS)의 수석 AI/ML 전문 솔루션 아키텍트입니다. 그녀는 컴퓨터 과학 박사 학위와 함께 기계 학습에 대한 광범위한 경험을 가지고 있습니다. 그녀는 주로 다양한 AI/ML 관련 비즈니스 과제에 대해 공공 부문 고객과 협력하여 AWS 클라우드에서 기계 학습 여정을 가속화하도록 돕습니다. 손님을 돕지 않을 때는 야외 활동을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습