TFX 기류 튜토리얼

개요

개요

이 튜토리얼은 TensorFlow Extended(TFX) 및 Apache Airflow를 오케스트레이터로 사용하여 자체 기계 학습 파이프라인을 생성하는 방법을 배우는 데 도움이 되도록 설계되었습니다. Vertex AI Workbench에서 실행되며 TFX 및 TensorBoard와의 통합 및 Jupyter Lab 환경의 TFX와의 상호 작용을 보여줍니다.

당신은 무엇을 할 거 야?

TFX를 사용하여 ML 파이프라인을 만드는 방법을 배웁니다.

  • TFX 파이프라인은 Directed Acyclic Graph 또는 "DAG"입니다. 우리는 종종 파이프라인을 DAG라고 부릅니다.
  • TFX 파이프라인은 프로덕션 ML 애플리케이션을 배포할 때 적합합니다.
  • TFX 파이프라인은 데이터 세트가 크거나 커질 수 있는 경우에 적합합니다.
  • 학습/제공 일관성이 중요한 경우 TFX 파이프라인이 적합합니다.
  • 추론을 위한 버전 관리가 중요한 경우 TFX 파이프라인이 적합합니다.
  • Google은 프로덕션 ML에 TFX 파이프라인을 사용합니다.

자세한 내용은 TFX 사용자 가이드 를 참조하세요.

일반적인 ML 개발 프로세스를 따르게 됩니다.

  • 데이터 수집, 이해 및 정리
  • 기능 엔지니어링
  • 훈련
  • 모델 성능 분석
  • 거품내기, 헹구기, 반복
  • 생산 준비

파이프라인 오케스트레이션을 위한 Apache Airflow

TFX 오케스트레이터는 파이프라인에서 정의한 종속성을 기반으로 TFX 파이프라인의 구성 요소를 예약하는 일을 담당합니다. TFX는 여러 환경 및 오케스트레이션 프레임워크에 이식할 수 있도록 설계되었습니다. TFX에서 지원하는 기본 오케스트레이터 중 하나는 Apache Airflow 입니다. 이 실습에서는 TFX 파이프라인 오케스트레이션에 Apache Airflow를 사용하는 방법을 보여줍니다. Apache Airflow는 프로그래밍 방식으로 워크플로를 작성, 예약 및 모니터링하는 플랫폼입니다. TFX는 Airflow를 사용하여 작업의 DAG(방향성 비순환 그래프)로 워크플로를 작성합니다. 풍부한 사용자 인터페이스를 통해 프로덕션에서 실행 중인 파이프라인을 쉽게 시각화하고 진행 상황을 모니터링하며 필요할 때 문제를 해결할 수 있습니다. Apache Airflow 워크플로는 코드로 정의됩니다. 이를 통해 유지 관리, 버전 관리, 테스트 및 협업이 더 쉬워집니다. Apache Airflow는 일괄 처리 파이프라인에 적합합니다. 가볍고 배우기 쉽습니다.

이 예에서는 Airflow를 수동으로 설정하여 인스턴스에서 TFX 파이프라인을 실행합니다.

TFX에서 지원하는 다른 기본 오케스트레이터는 Apache Beam 및 Kubeflow입니다. Apache Beam 은 여러 데이터 처리 백엔드(Beam Runners)에서 실행할 수 있습니다. Cloud Dataflow는 TFX 파이프라인을 실행하는 데 사용할 수 있는 빔 러너 중 하나입니다. Apache Beam은 스트리밍 및 일괄 처리 파이프라인 모두에 사용할 수 있습니다.
Kubeflow 는 Kubernetes에서 기계 학습(ML) 워크플로를 간단하고 이식 가능하며 확장 가능하게 배포하는 데 전념하는 오픈 소스 ML 플랫폼입니다. Kubernetes 클러스터에 배포해야 하는 경우 Kubeflow를 TFFX 파이프라인의 오케스트레이터로 사용할 수 있습니다. 또한 사용자 지정 오케스트레이터 를 사용하여 TFX 파이프라인을 실행할 수도 있습니다.

기류에 대한 자세한 내용은 여기 를 참조하십시오.

시카고 택시 데이터셋

택시.jpg

시카고.png

시카고 시에서 발표한 Taxi Trips 데이터 세트 를 사용하게 됩니다.

모델 목표 - 이진 분류

고객이 20% 정도의 팁을 줍니까?

Google 클라우드 프로젝트 설정

실습 시작 버튼을 클릭하기 전에 다음 지침을 읽으십시오. 실습은 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작 을 클릭하면 시작되는 타이머는 Google Cloud 리소스를 사용할 수 있는 기간을 보여줍니다.

이 실습 랩에서는 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 랩 활동을 직접 수행할 수 있습니다. 실습 기간 동안 Google Cloud에 로그인하고 액세스하는 데 사용하는 새로운 임시 사용자 인증 정보를 제공합니다.

필요한 사항 이 실습을 완료하려면 다음이 필요합니다.

  • 표준 인터넷 브라우저에 액세스합니다(Chrome 브라우저 권장).
  • 실습을 완료할 시간입니다.

실습을 시작하고 Google Cloud Console에 로그인하는 방법 1. 실습 시작 버튼을 클릭합니다. 실습 비용을 지불해야 하는 경우 지불 방법을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 이 실습에 사용해야 하는 임시 자격 증명으로 채워진 패널이 있습니다.

qwiksetup1.png

  1. 사용자 이름을 복사한 다음 Open Google Console 을 클릭합니다. 실습에서 리소스를 가동한 다음 로그인 페이지를 표시하는 다른 탭을 엽니다.

qwiksetup2.png

팁: 별도의 창에서 나란히 탭을 엽니다.

qwiksetup3.png

  1. 로그인 페이지에서 왼쪽 패널에서 복사한 사용자 이름을 붙여넣습니다. 그런 다음 비밀번호를 복사하여 붙여넣으십시오.
  1. 다음 페이지를 클릭하십시오.
  2. 이용약관에 동의합니다.
  • 복구 옵션 또는 이중 인증을 추가하지 마십시오(임시 계정이므로).

  • 무료 평가판에 가입하지 마십시오.

잠시 후 이 탭에서 Cloud Console이 열립니다.

qwiksetup4.png

Cloud Shell 활성화

Cloud Shell은 개발 도구가 로드되는 가상 머신입니다. 영구 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행됩니다. Cloud Shell은 Google Cloud 리소스에 대한 명령줄 액세스를 제공합니다.

Cloud Console의 오른쪽 상단 도구 모음에서 Cloud Shell 활성화 버튼을 클릭합니다.

qwiksetup5.png

계속 을 클릭합니다.

qwiksetup6.png

환경을 프로비저닝하고 연결하는 데 몇 분 정도 걸립니다. 연결되면 이미 인증되고 프로젝트가 _PROJECT ID 로 설정됩니다. 예를 들어:

qwiksetup7.png

gcloud 는 Google Cloud용 명령줄 도구입니다. Cloud Shell에 사전 설치되어 제공되며 탭 완성을 지원합니다.

다음 명령으로 활성 계정 이름을 나열할 수 있습니다.

gcloud auth list

(산출)

활성: * 계정: student-01-xxxxxxxxxxxx@qwiklabs.net 활성 계정을 설정하려면 다음을 실행합니다. $ gcloud config set account ACCOUNT

다음 명령어로 프로젝트 ID를 나열할 수 있습니다. gcloud config list project (Output)

[핵심] 프로젝트 =

(출력 예)

[핵심] 프로젝트 = qwiklabs-gcp-44776a13dea667a6

gcloud에 대한 전체 문서는 gcloud 명령줄 도구 개요를 참조하세요.

Google 클라우드 서비스 사용

  1. Cloud Shell에서 gcloud를 사용하여 실습에서 사용되는 서비스를 사용 설정합니다. gcloud services enable notebooks.googleapis.com

Vertex 노트북 인스턴스 배포

  1. 탐색 메뉴 를 클릭하고 Vertex AI 로 이동한 다음 Workbench 로 이동합니다.

버텍스-ai-workbench.png

  1. 노트북 인스턴스 페이지에서 새 노트북 을 클릭합니다.

  2. 인스턴스 사용자 지정 메뉴에서 TensorFlow Enterprise 를 선택하고 TensorFlow Enterprise 2.x(LTS 포함) > Without GPUs 버전을 선택합니다.

정점-노트북-만들기-2.png

  1. 새 노트북 인스턴스 대화 상자에서 연필 아이콘을 클릭하여 인스턴스 속성을 편집 합니다.

  2. 인스턴스 이름 에 인스턴스 이름을 입력합니다.

  3. 지역 에 대해 us-east1 을 선택하고 구역 에 대해 선택한 지역 내의 구역을 선택하십시오.

  4. 머신 구성까지 아래로 스크롤하고 머신 유형 으로 e2-standard-2 를 선택합니다.

  5. 나머지 필드는 기본값으로 두고 만들기 를 클릭합니다.

몇 분 후 Vertex AI 콘솔에 인스턴스 이름이 표시되고 그 뒤에 Jupyterlab 열기 가 표시됩니다.

  1. JupyterLab 열기를 클릭합니다. JupyterLab 창이 새 탭에서 열립니다.

환경 설정

랩 저장소 복제

다음으로 JupyterLab 인스턴스에서 tfx 리포지토리를 복제합니다. 1. JupyterLab에서 터미널 아이콘을 클릭하여 새 터미널을 엽니다.

참고: 메시지가 표시되면 빌드 권장 사항에 대해 Cancel 를 클릭합니다.

  1. tfx Github 리포지토리를 복제하려면 다음 명령을 입력하고 Enter 키를 누릅니다.
git clone https://github.com/tensorflow/tfx.git
  1. 리포지토리를 복제했는지 확인하려면 tfx 디렉터리를 두 번 클릭하고 콘텐츠를 볼 수 있는지 확인합니다.

repo-directory.png

랩 종속성 설치

  1. 다음을 실행하여 tfx/tfx/examples/airflow_workshop/taxi/setup/ 폴더로 이동한 다음 ./setup_demo.sh 를 실행하여 랩 종속성을 설치합니다.
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh

위의 코드는

  • 필요한 패키지를 설치합니다.
  • 홈 폴더에 airflow 폴더를 생성합니다.
  • dags 폴더를 tfx/tfx/examples/airflow_workshop/taxi/setup/ 폴더에서 ~/airflow/ 폴더로 복사합니다.
  • csv 파일을 tfx/tfx/examples/airflow_workshop/taxi/setup/data 에서 ~/airflow/data 로 복사합니다.

airflow-home.png

Airflow 서버 구성

브라우저에서 기류 서버에 액세스하기 위한 방화벽 규칙 생성

  1. <a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a> 로 이동하여 다음을 확인합니다. 프로젝트 이름이 적절하게 선택되었습니다.
  2. 상단의 CREATE FIREWALL RULE 옵션을 클릭하십시오.

방화벽 규칙.png

방화벽 만들기 대화 상자 에서 아래 나열된 단계를 따릅니다.

  1. 이름airflow-tfx 를 입력합니다.
  2. 우선 순위 에 대해 1 을 선택합니다.
  3. 대상 All instances in the network 선택합니다.
  4. 소스 IPv4 범위 에 대해 0.0.0.0/0 을 선택합니다.
  5. 프로토콜 및 포트 의 경우 tcp를 클릭하고 tcp 옆의 상자에 7000 을 입력 tcp .
  6. Create 를 클릭합니다.

create-firewall-dialog.png

쉘에서 기류 서버 실행

Jupyter Lab Terminal 창에서 홈 디렉터리로 변경하고 airflow users create 명령을 실행하여 Airflow에 대한 관리 사용자를 생성합니다.

cd
airflow users  create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin

그런 다음 airflow webserverairflow scheduler 명령을 실행하여 서버를 실행합니다. 방화벽을 통해 허용되므로 포트 7000 을 선택하십시오.

nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &

외부 IP 가져오기

  1. Cloud Shell에서 gcloud 를 사용하여 외부 IP를 가져옵니다.
gcloud compute instances list

gcloud-instance-ip.png

DAG/파이프라인 실행

브라우저에서

브라우저를 열고 http://로 이동합니다. :7000

  • 로그인 페이지에서 airflow users create 명령을 실행할 때 선택한 사용자 이름( admin )과 비밀번호( admin )를 입력합니다.

기류 로그인.png

Airflow는 Python 소스 파일에서 DAG를 로드합니다. 각 파일을 가져와서 실행합니다. 그런 다음 해당 파일에서 모든 DAG 개체를 로드합니다. DAG 개체를 정의하는 모든 .py 파일은 기류 홈페이지에서 파이프라인으로 나열됩니다.

이 자습서에서 Airflow는 ~/airflow/dags/ 폴더에서 DAG 개체를 검색합니다.

~/airflow/dags/taxi_pipeline.py 를 열고 하단으로 스크롤하면 DAG 라는 변수에 DAG 객체를 생성하여 저장하는 것을 확인할 수 있습니다. 따라서 아래와 같이 기류 홈페이지에 파이프라인으로 나열됩니다.

dag-home-full.png

택시를 클릭하면 DAG의 그리드 보기로 리디렉션됩니다. 상단의 Graph 옵션을 클릭하여 DAG의 그래프 보기를 얻을 수 있습니다.

기류-dag-graph.png

택시 파이프라인 트리거

홈페이지에서 DAG와 상호 작용하는 데 사용할 수 있는 버튼을 볼 수 있습니다.

dag-buttons.png

작업 헤더 아래에서 트리거 버튼을 클릭하여 파이프라인을 트리거합니다.

택시 DAG 페이지에서 오른쪽에 있는 버튼을 사용하여 파이프라인이 실행될 때 DAG의 그래프 보기 상태를 새로 고칩니다. 또한 자동 새로 고침 을 활성화하여 상태가 변경될 때 그래프 보기를 자동으로 새로 고치도록 Airflow에 지시할 수 있습니다.

dag-버튼-새로고침.png

터미널에서 Airflow CLI 를 사용하여 DAG를 활성화하고 트리거할 수도 있습니다.

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

파이프라인이 완료되기를 기다리는 중

파이프라인을 트리거한 후 DAG 보기에서 실행 중인 파이프라인의 진행 상황을 볼 수 있습니다. 각 구성 요소가 실행될 때 DAG 그래프에서 구성 요소의 윤곽선 색상이 상태를 표시하도록 변경됩니다. 구성 요소가 처리를 마치면 외곽선이 짙은 녹색으로 바뀌어 완료되었음을 나타냅니다.

dag-step7.png

구성 요소 이해

이제 이 파이프라인의 구성 요소를 자세히 살펴보고 파이프라인의 각 단계에서 생성된 출력을 개별적으로 살펴보겠습니다.

  1. JupyterLab에서 ~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/ 로 이동합니다.

  2. notebook.ipynb를 엽니다. 노트북-ipynb.png

  3. 노트북에서 실습을 계속하고 실행 ( 실행 버튼.png ) 아이콘을 화면 상단에 표시합니다. 또는 SHIFT + ENTER 를 사용하여 셀에서 코드를 실행할 수 있습니다.

이야기를 읽고 각 세포에서 무슨 일이 일어나고 있는지 이해했는지 확인하십시오.