[GCP] Airflow(on Cloud Composier)에서 AI Plaatform을 실행하는 Training

이거 뭐야?


에어플로우(on Cloud Composier)가 GCP AI Plaatform(이하 AIPF)의 담화 기능을 관리한다는 취지다.

어떤 과제를 해결할까

  • 클라우드 컴퓨팅 자원을 사용하여 기계 학습의 훈련(학습) 프로젝트를 비동기적으로 병행할 수 있다.이렇게 하면 대량의 데이터를 사용하는 학습 등 대량의 계산 자원을 필요로 하는 조건을 충족시킬 수 있다.
  • 또한 에어플로우를 사용하여 워크플로우 엔진이 수행하는 정시 제어와 의존 관계(데이터 센터 생성 후 AIPF 가동 작업 등)를 구축할 수 있다.
  • 시간제어만 수행하면 클라우드 Schedule->Pub/Sub->cloud duction 등도 가능하다.
  • 클라우드 컴포지셔를 사용하면 에어플로우 구축과 유지보수가 쉬워져 애플리케이션 개발에 집중할 수 있다.
  • AI Plaarform의 개요


    AI 관련 기능군을 담은 서비스 개념이라고 본다.
    AI Plaatform이라는 GCP 서비스는 다음과 같은 기능을 제공합니다.
  • AI Platfrom Training
  • AI Platfrom Prediction
  • AI Platfrom Vizier
  • AI Platfrom Notebooks
  • and more
  • 이 글은 AI Platfrom Training을 사용했다.
    Ref https://cloud.google.com/ai-platform/docs?hl=ja

    Cloud Composter 개요

  • 에어플로우의 관리 서비스.
  • MySQL을 구축할 때 GCE를 만들고 스스로 관리하느냐, 클라우드SQL을 사용하느냐는 추상적인 견해와 같다.
  • Composier에서 검색해도 PHP 상하문에 있는 글이 나와 조사할 때'GCP'같은 단어가 추가된다.
  • 에어플로우의 개요.


    파이톤을 통해 DAG를 만들고 일정, 관리를 할 수 있는 플랫폼이다.모든task를 만들 수 있고task 간의 의존 관계를 구축할 수 있습니다.
    디테일

    실행 방법


    Traning
    AIPF의 샘플https://github.com/GoogleCloudPlatform/ai-platform-samples/tree/master/training/sklearn/structured/base을 설치로 사용했다.
    Airflow
    다음과 같이 Airflow에서 BashOperator를 사용하여 셸을 실행합니다.
    dag.py
    from composer.dags.dor_poc.create_datalake.dag_dwh import DAG_NAME
    from datetime import datetime, timedelta, timezone
    
    from airflow import DAG
    from airflow.utils.dates import days_ago
    from airflow.models import Variable
    from airflow.operators.bash_operator import BashOperator
    
    # config
    DAG_NAME = "training_model"
    PROJECT_ID = Variable.get("project_id")
    BUCKET_NAME = Variable.get("bucket_name")
    JST = timezone(timedelta(hours=+9), "JST")
    
    default_args = {
        "start_date": days_ago(0),
    }
    
    with DAG(
        DAG_NAME,
        schedule_interval=None,
        catchup=False,
        default_args=default_args) as dag:
    
        job_id = f"{task_id}_{datetime.now(JST).strftime('%Y%m%d%H%M')}"
    
        task_training_model = BashOperator(
            task_id="task1",
            bash_command=f'''
                gcloud ai-platform jobs submit training "{job_id}" \
                --job-dir="gs://{BUCKET_NAME}" \
                --package-path=/home/airflow/gcs/dags/sample/trainer \
                --module-name=trainer.task \
                --region="asia-northeast1" \
                --runtime-version=2.2 \
                --python-version=3.7 \
                --scale-tier=BASIC \
                -- \
                --input="/home/airflow/gcs/dags/sample/datasets/downlaod-taxi.sh" \
                --n-estimators=20 \
                --max-depth=3
            '''
        )
    

    참조 링크

  • https://github.com/GoogleCloudPlatform/ai-platform-samples/tree/master/training/sklearn/structured/base
  • https://cloud.google.com/ai-platform/training/docs/training-jobs
  • https://cloud.google.com/ai-platform/training/docs/training-scikit-learn
  • https://cloud.google.com/ai-platform/training/docs/packaging-trainer
  • 좋은 웹페이지 즐겨찾기