>기술 주변기기 >일체 포함 >Zenml 프로젝트를 사용하여 mlops 이해

Zenml 프로젝트를 사용하여 mlops 이해

Lisa Kudrow
Lisa Kudrow원래의
2025-03-08 11:16:09493검색
AI 혁명은 우리에게 있습니다. 그러나이 혼란 사이에서 우리 대부분은 매우 중요한 질문이 간과됩니다. 우리는 어떻게 이러한 정교한 AI 시스템을 유지합니까? 기계 학습 운영 (MLOPS)이 시작되는 곳입니다. 이 블로그에서는 엔드 투 엔드 프로젝트를 구축하여 오픈 소스 MLOPS 프레임 워크 인 Zenml을 사용한 MLOPS의 중요성을 이해할 것입니다.

이 기사는 데이터 과학 블로그 톤의

의 일부로 출판되었습니다. > 목차 mlops 란 무엇입니까? zenml 란 무엇입니까?

실습 프로젝트를 가진 mlops 이해

초기 구성

    탐색 적 데이터 분석 (Eda) zenml as mod as steps for mod as steps for mod a moding stection 파이프 라인
  • 자주 묻는 질문
  • mlops 란 무엇입니까? MLOPS는 기계 학습 엔지니어가 ML 모델 라이프 사이클의 프로세스를 간소화 할 수 있도록 권한을 부여합니다. 기계 학습 제작은 어렵습니다. 머신 러닝 라이프 사이클은 데이터 수집, 데이터 준비, 모델 교육, 모델 튜닝, 모델 배포, 모델 모니터링, 설명 성 등과 같은 많은 복잡한 구성 요소로 구성됩니다. MLOPS는 강력한 파이프 라인을 통해 프로세스의 각 단계를 자동화하여 수동 오류를 줄입니다. 최소한의 수동 노력과 최대 효율적인 운영으로 AI 인프라를 완화하는 것은 협력적인 관행입니다. Mlops를 향신료를 가진 AI 산업의 DevOps로 생각하십시오.
  • Zenml은 무엇입니까?
  • Zenml은 기계 학습 워크 플로의 개발, 배포 및 관리를 단순화하는 오픈 소스 MLOPS 프레임 워크입니다. MLOPS의 원칙을 활용함으로써 다양한 도구 및 인프라와 완벽하게 통합하여 사용자에게 단일 작업장에서 AI 워크 플로를 유지하기위한 모듈 식 접근법을 제공합니다. Zenml은 자동 로그, 메타 데이터 추적기, 모델 추적기, 실험 추적기, 아티팩트 스토어 및 복잡한 구성없이 코어 로직을위한 간단한 파이썬 데코레이터와 같은 기능을 제공합니다. 실습 프로젝트를 통해 mlops를 이해합니다 이제 엔드 투 엔드 간단하지만 생산 등급 데이터 과학 프로젝트의 도움으로 MLOPS가 어떻게 구현되는지 이해할 것입니다. 이 프로젝트에서는 고객의 고객 수명 가치 (CLTV)를 예측하기 위해 기계 학습 모델을 작성하고 배포합니다. CLTV는 회사가 장기적으로 고객으로부터 얼마나 많은 수익을 올리거나 손실 될지 확인하기 위해 회사가 사용하는 핵심 지표입니다. 이 메트릭 사용 회사는 대상 광고 등을 위해 고객에게 더 많은 비용을 지출하거나하지 않도록 선택할 수 있습니다. 다음 섹션에서 프로젝트 구현을 시작할 수 있습니다 초기 구성 이제 프로젝트 구성에 곧바로 들어갑니다. 먼저 UCI 머신 러닝 리포지토리에서 온라인 소매 데이터 세트를 다운로드해야합니다. Zenml은 Windows에서 지원되지 않으므로 Linux (WSL에서 WSL) 또는 MACOS를 사용해야합니다. 다음으로 요구 사항을 다운로드합니다 .txt. 이제 몇 가지 구성을 위해 터미널로 진행합시다.

    이제 기본 로그인 자격 증명을 사용하여 Zenml 대시 보드에 로그인합니다 (비밀번호 필요 없음). 축하합니다. 프로젝트 구성을 성공적으로 완료했습니다 탐색 데이터 분석 (EDA) 이제 데이터로 손을 더럽 힐 시간입니다. 데이터 분석을위한 Ajupyter 노트북을 만들 것입니다 pro 팁

    : 나를 따르지 않고 자신의 분석을 수행하십시오. 또는 프로젝트에서 사용할 다른 데이터 분석 방법을 만든이 노트북을 따라갈 수 있습니다. 이제 데이터 분석의 공유를 수행했다고 가정하면 매운 부분으로 바로 점프 할 수 있습니다. Zenml에 대한 단계 정의 코드의 모듈성 및 재사용 성을 높이기 위해 @step 데코레이터는 Zenml에서 사용하여 코드를 구성하여 파이프 라인으로 전달하여 오류의 가능성을 줄입니다. 소스 폴더에서는 초기 단계를 초기화하기 전에 각 단계마다 메소드를 작성합니다. 우리는 각 방법 (데이터 수집, 데이터 청소, 기능 엔지니어링 등)의 추상 방법을 만들어 각 방법에 대한 시스템 설계 패턴을 따릅니다. 섭취의 샘플 코드 # Make sure you have Python 3.10 or above installed python --version # Make a new Python environment using any method python3.10 -m venv myenv # Activate the environment source myenv/bin/activate # Install the requirements from the provided source above pip install -r requirements.txt # Install the Zenml server pip install zenml[server] == 0.66.0 # Initialize the Zenml server zenml init # Launch the Zenml dashboard zenml up ingest_data.py 에 대한 코드 샘플

    우리는 나머지 방법을 생성하기 위해이 패턴을 따를 것입니다. 주어진 Github 저장소에서 코드를 복사 할 수 있습니다.

    모든 메소드를 작성한 후에는 단계 폴더에서 Zenml 단계를 초기화해야합니다. 이제 우리가 지금까지 만든 모든 방법은 그에 따라 Zenml 단계에서 사용됩니다. 데이터 수집의 샘플 코드 data_ingestion_step.py의 샘플 코드 :

    우리는 프로젝트에서 Zenml 단계의 나머지 단계를 만들기 위해 위와 동일한 패턴을 따릅니다. 여기에서 복사 할 수 있습니다.

    와우! Mlops의 가장 중요한 부분 중 하나를 만들고 배우는 것을 축하합니다. 처음 이후로 약간 압도해도 괜찮습니다. 첫 번째 생산 등급 ML 모델을 실행할 때 모든 것이 합리적이므로 너무 많은 스트레스를받지 마십시오. 구축 파이프 라인 파이프 라인을 구축 할 시간입니다. 아니요, 물이나 기름을 가지고 다니지 마십시오. 파이프 라인은 전체 기계 학습 워크 플로우를 형성하기 위해 특정 순서로 구성된 일련의 단계입니다. @pipeline 데코레이터는 Zenml에서 위에서 만든 단계를 포함 할 파이프 라인을 지정하는 데 사용됩니다. 이 접근법은 한 단계의 출력을 다음 단계의 입력으로 사용할 수 있도록합니다. 여기에 우리의 training_pipeline.py : 가 있습니다

    이제 우리는 Training_Pipeline.py를 실행하여 한 번의 클릭으로 ML 모델을 훈련시킬 수 있습니다. Zenml 대시 보드에서 파이프 라인을 확인할 수 있습니다.

    우리는 모델 세부 정보를 확인하고 여러 모델을 훈련시키고 터미널에서 다음 코드를 실행하여 MLFlow 대시 보드에서 비교할 수 있습니다.

    배포 파이프 라인 생성 다음은 deployment_pipeline.py를 생성합니다

    배포 파이프 라인을 실행하면 Zenml 대시 보드에서 이와 같은보기를 얻을 수 있습니다.

    # Make sure you have Python 3.10 or above installed
    python --version
    
    # Make a new Python environment using any method
    python3.10 -m venv myenv 
    
    # Activate the environment
    source myenv/bin/activate
    
    # Install the requirements from the provided source above
    pip install -r requirements.txt
    
    # Install the Zenml server
    pip install zenml[server] == 0.66.0
    
    # Initialize the Zenml server
    zenml init
    
    # Launch the Zenml dashboard
    zenml up
    축하합니다. 로컬 인스턴스에서 mlflow 및 zenml을 사용하여 최고의 모델을 배포했습니다. 플라스크 앱 생성

    다음 단계는 모델을 최종 사용자에게 투사 할 플라스크 앱을 만드는 것입니다. 이를 위해 템플릿 폴더 내에 app.py 및 index.html을 만들어야합니다. 아래 코드를 따라 app.py를 만듭니다 :

    index.html 파일을 만들려면 아래 코드를 따르십시오.

    app.py는 실행 후 다음과 같아야합니다 Zenml 프로젝트를 사용하여 mlops 이해

    이제 마지막 단계는 GitHub 저장소에서 이러한 변경 사항을 커밋하고 모든 클라우드 서버에 온라인으로 모델을 배포하는 것입니다.이 프로젝트의 경우 무료 렌더링 서버에 App.py를 배포하면 그렇게 할 수 있습니다.

    . <.com> render.com으로 이동하여 프로젝트의 Github 저장소를 렌더링하도록 연결하십시오. <.> 그게 다야. 첫 번째 MLOPS 프로젝트를 성공적으로 만들었습니다. 당신이 그것을 즐겼기를 바랍니다!

    import logging
    import pandas as pd
    from abc import ABC, abstractmethod
    
    # Setup logging configuration
    logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
    
    # Abstract Base Class for Data Ingestion Strategy
    # ------------------------------------------------
    # This class defines a common interface for different data ingestion strategies.
    # Subclasses must implement the `ingest` method.
    class DataIngestionStrategy(ABC):
        @abstractmethod
        def ingest(self, file_path: str) -> pd.DataFrame:
            """
            Abstract method to ingest data from a file into a DataFrame.
    
            Parameters:
            file_path (str): The path to the data file to ingest.
    
            Returns:
            pd.DataFrame: A dataframe containing the ingested data.
            """
            pass
        
    # Concrete Strategy for XLSX File Ingestion
    # -----------------------------------------
    # This strategy handles the ingestion of data from an XLSX file.
    class XLSXIngestion(DataIngestionStrategy):
        def __init__(self, sheet_name=0):
            """
            Initializes the XLSXIngestion with optional sheet name.
    
            Parameters:
            sheet_name (str or int): The sheet name or index to read, default is the first sheet.
            """
            self.sheet_name = sheet_name
    
        def ingest(self, file_path: str) -> pd.DataFrame:
            """
            Ingests data from an XLSX file into a DataFrame.
    
            Parameters:
            file_path (str): The path to the XLSX file.
    
            Returns:
            pd.DataFrame: A dataframe containing the ingested data.
            """
            try:
                logging.info(f"Attempting to read XLSX file: {file_path}")
                df = pd.read_excel(file_path,dtype={'InvoiceNo': str, 'StockCode': str, 'Description':str}, sheet_name=self.sheet_name)
                logging.info(f"Successfully read XLSX file: {file_path}")
                return df
            except FileNotFoundError:
                logging.error(f"File not found: {file_path}")
            except pd.errors.EmptyDataError:
                logging.error(f"File is empty: {file_path}")
            except Exception as e:
                logging.error(f"An error occurred while reading the XLSX file: {e}")
            return pd.DataFrame()
    
    
    # Context Class for Data Ingestion
    # --------------------------------
    # This class uses a DataIngestionStrategy to ingest data from a file.
    class DataIngestor:
        def __init__(self, strategy: DataIngestionStrategy):
            """
            Initializes the DataIngestor with a specific data ingestion strategy.
    
            Parameters:
            strategy (DataIngestionStrategy): The strategy to be used for data ingestion.
            """
            self._strategy = strategy
    
        def set_strategy(self, strategy: DataIngestionStrategy):
            """
            Sets a new strategy for the DataIngestor.
    
            Parameters:
            strategy (DataIngestionStrategy): The new strategy to be used for data ingestion.
            """
            logging.info("Switching data ingestion strategy.")
            self._strategy = strategy
    
        def ingest_data(self, file_path: str) -> pd.DataFrame:
            """
            Executes the data ingestion using the current strategy.
    
            Parameters:
            file_path (str): The path to the data file to ingest.
    
            Returns:
            pd.DataFrame: A dataframe containing the ingested data.
            """
            logging.info("Ingesting data using the current strategy.")
            return self._strategy.ingest(file_path)
    
    
    # Example usage
    if __name__ == "__main__":
        # Example file path for XLSX file
        # file_path = "../data/raw/your_data_file.xlsx"
    
        # XLSX Ingestion Example
        # xlsx_ingestor = DataIngestor(XLSXIngestion(sheet_name=0))
        # df = xlsx_ingestor.ingest_data(file_path)
    
        # Show the first few rows of the ingested DataFrame if successful
        # if not df.empty:
        #     logging.info("Displaying the first few rows of the ingested data:")
        #     print(df.head())
        pass csv
    결론 Mlops는 데이터 수집에서 모델 배포에 이르기까지 기계 학습 워크 플로의 복잡성을 관리하는 데 필수 불가능한 관행이되었습니다. Open-Source MLOPS 프레임 워크 인 ZenML을 활용하여 CLTV (Customer LifeTime Value) 예측을위한 생산 등급 ML 모델을 구축, 교육 및 배포하는 프로세스를 간소화했습니다. 모듈 식 코딩, 강력한 파이프 라인 및 원활한 통합을 통해 엔드 투 엔드 프로젝트를 효율적으로 만드는 방법을 보여주었습니다. 기업이 AI 중심 솔루션에 점점 더 의존함에 따라 Zenml과 같은 프레임 워크는 팀이 최소한의 수동 개입으로 확장 성, 재현성 및 성능을 유지할 수 있도록 권한을 부여합니다. 키 테이크 아웃

    MLOPS는 ML 라이프 사이클을 단순화하여 자동화 된 파이프 라인을 통한 오류를 줄이고 효율성을 높입니다. Zenml은 기계 학습 워크 플로 관리를위한 모듈 식의 재사용 가능한 코딩 구조를 제공합니다. 엔드 투 엔드 파이프 라인 구축에는 데이터 수집에서 배포에 이르기까지 명확한 단계를 정의해야합니다. 배포 파이프 라인 및 플라스크 앱은 ML 모델이 생산 준비가되고 액세스 할 수 있도록합니다. Zenml 및 Mlflow와 같은 도구는 ML 프로젝트의 원활한 추적, 모니터링 및 최적화를 가능하게합니다.

    자주 묻는 질문
    • q1. mlops 란 무엇이며 왜 중요한가?
    • a. MLOPS (기계 학습 운영)는 데이터 수집, 모델 교육, 배포 및 모니터링과 같은 프로세스를 자동화하여 효율성 및 확장 성을 보장하여 ML 라이프 사이클을 간소화합니다. Zenml은 무엇을 사용합니까?
    • a. Zenml의 파이프 라인은 일련의 단계를 정의하여 기계 학습 프로젝트를위한 구조적이고 재사용 가능한 워크 플로를 보장합니다. 플라스크 앱은 ML 모델과 어떻게 통합됩니까? Flask 앱은 사용자 인터페이스 역할을하여 최종 사용자가 데이터를 입력하고 배포 된 ML 모델로부터 예측을받을 수 있도록합니다.

위 내용은 Zenml 프로젝트를 사용하여 mlops 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.