Jupyter 정글에서 ZenML 열반으로의 여정을 떠날 예정이므로 버클을 채우세요. 아니요, ZenML은 당신을 명상 마스터로 만들어 주지는 않지만 파이프라인 전문가로 만들어 줄 것입니다. 따라서 100줄의 스파게티 코드를 따로 보관하세요. 이제 큰 총을 가져올 시간입니다.
따라가려면 ZenML을 설치하세요. (저를 믿으세요. 지난 모델이 고장난 이유를 상사에게 설명하는 것보다 쉽습니다.) 여기서는 유형이 중요하므로 자유형 코딩은 필요하지 않습니다. 그것에 대해서는 진행하면서 이야기하겠습니다.
pipelines.py라는 새 파일을 만듭니다. 이 걸작에서 우리는 얽힌 데이터 처리보다 좀 더 깔끔한 파이프라인을 구축할 것입니다. ZenML의 파이프라인 데코레이터로 시작하세요.
from zenml import pipeline @pipeline(name="used_car_price_predictor") def ml_pipeline(): # We’ll fill in these dots soon. ...
첫 번째 ZenML 단계는 .zip 파일에서 데이터를 읽는 것입니다(물론 데이터는 단순한 CSV 형식으로 제공되지 않기 때문입니다). 데이터를 가져와서 아티팩트에 넣는 data_ingestion_step 함수를 만나보세요. ZenML 용어는 "이 혼란스러운 부분을 다음 단계로 전달하지만 지금은 기술적으로 훌륭합니다"를 의미합니다.
from zenml import step import pandas as pd from typing import Tuple @step(enable_cache=False) def data_ingestion_step(file_path: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: # Extract zip files and read data with pd.read_csv() ... return train, test, sample # This tuple is now an “Artifact” – no fancy unboxing needed
ml_pipeline에서는 다음과 같이 아티팩트에서 실제 데이터를 추출합니다.
raw_data_artifacts = data_ingestion_step(file_path="data/playground-series-s4e9.zip") train, test, sample = raw_data_artifacts
이 단계는 상대적으로 고통스럽지 않지만 자만하지 마세요. ZenML의 단계 데코레이터를 사용하여 누락된 값을 처리하고, 기능을 엔지니어링하고, 이상값을 정리합니다.
@step(enable_cache=False) def handle_missing_values_step(df: pd.DataFrame) -> pd.DataFrame: # Code to fill missing values ... @step(enable_cache=False) def feature_engineering_step(df: pd.DataFrame, strategy: str, features: list) -> pd.DataFrame: # Log-transform and other fancy tricks ... @step(enable_cache=False) def outlier_detection_step(df: pd.DataFrame, feature: str, strategy: str, method: str) -> pd.DataFrame: # Outlier removal or adjustment ...
현재 진행 중인 작업은 다음과 같습니다.
filled_train = handle_missing_values_step(train) engineered_train = feature_engineering_step(filled_train, strategy='log', features=['price']) cleaned_train = outlier_detection_step(df=engineered_train, feature='price', strategy='IQR', method='remove')
드디어 데이터가 깨끗해졌습니다. 이제 이를 훈련 세트와 테스트 세트로 나눌 차례입니다. 이것이 쉬운 부분이라고 생각하시겠지만, 틀렸습니다. 유형 캐스팅이 핵심입니다.
X_train, X_test, y_train, y_test = data_splitter(cleaned_train)
여기서 문제가 발생합니다. Sklearn의 RegressorMixin은 이식성에 유용하지만 ZenML 아티팩트가 항상 좋은 것은 아닙니다. 따라서 사용자 정의 PipelineRegressor 클래스를 만들어 해킹합니다.
from sklearn.pipeline import Pipeline from sklearn.base import RegressorMixin class PipelineRegressor(Pipeline, RegressorMixin): pass
이제 model_building_step에서 이 클래스를 사용합니다. mlflow를 초기화하고, 열을 기록하고, 프로세스를 마무리해야 합니다.
from zenml import pipeline @pipeline(name="used_car_price_predictor") def ml_pipeline(): # We’ll fill in these dots soon. ...
모델을 구축한 후 몇 가지 예측을 하고 로그 평가 지표를 작성합니다. "보세요, 정확해요!"처럼 간단하다면 말이죠. ZenML 버전은 다음과 같습니다.
from zenml import step import pandas as pd from typing import Tuple @step(enable_cache=False) def data_ingestion_step(file_path: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: # Extract zip files and read data with pd.read_csv() ... return train, test, sample # This tuple is now an “Artifact” – no fancy unboxing needed
축하합니다. 해냈어요! 이제 ml_pipeline()을 실행하고 ZenML 대시보드로 이동하여 프로세스의 DAG 보기를 확인하세요. MLFlow UI는 사용 중인 측정항목, 모델 세부정보 및 기능을 표시합니다.
유용한 링크
위 내용은 기계 학습 파이프라인 길들이기 Beast: ZenML Edition의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!