October 20, 2021

Hướng dẫn training và dự đoán trên Cloud ML Engine

Bài viết này sẽ hướng dẫn các bước để training và dự đoán trên Cloud ML Engine. Chúng ta sẽ xây dựng một model để dự đoán hai danh mục thu nhập dựa trên Thống kê thu nhập điều tra dân số của Mỹ. Hai danh mục đó gồm:

  • >50K – Thu nhập trên 50.000 đô la.
  • <=50K – Thu nhập bé hơn hoặc bằng 50.000 đô la.

YÊU CẦU

  • Một tài khoản GCP đã được kích hoạt thanh toán.
  • Một project đã được tạo và kịch hoạt API của Cloud ML Engine và Compute Engine.
  • Cài đặt Cloud SDK.

CÀI ĐẶT MÔI TRƯỜNG

1. Mở Google Cloud Platform Console.

2. Click nút Activate Google Cloud Shell ở góc trên cửa sổ.

– Một cửa sổ command line sẽ hiện ra.

3. Cấu hình gcloud để sử dụng project bạn đã chọn.

gcloud config set project [selected-project-id]

XÁC MINH CÁC COMPONENTS CỦA GOOGLE CLOUD SDK

1. Liệt kê các model.

gcloud ml-engine models list

2. Nếu không có model nào được tạo trước đó, kết quả trả về như sau:

Listed 0 items.

3. Update gcloud.

gcloud components update

CÀI ĐẶT TENSORFLOW

Để cài đặt TensorFlow, ta chạy lệnh sau:

pip install --user --upgrade tensorflow

DOWNLOAD SAMPLE CODE

– Download sample code từ Github. Chạy dòng lệnh sau để download sample code.

wget https://github.com/GoogleCloudPlatform/cloudml-samples/archive/master.zip

– Giải nén thư mục cloudml-samples-master.

unzip master.zip

– Điều hướng vào thư mục estimator.

cd cloudml-samples-master/census/estimator

LẤY DỮ LIỆU ĐỂ TRAINING

1. Download dữ liệu.

mkdir data
gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/

2. Khai báo 2 biến đường dẫn local.

TRAIN_DATA=$(pwd)/data/adult.data.csv
EVAL_DATA=$(pwd)/data/adult.test.csv

CÀI ĐẶT CÁC THƯ VIỆN

Để cài đặt các thư viện ta chạy dòng lệnh sau.

pip install --user -r ../requirements.txt

CHẠY TRAINING JOB Ở LOCAL

1. Tạo thư mục output và khai báo biến MODEL_DIR.

MODEL_DIR=output

2. Xoá toàn bộ dữ liệu trong thư mục output.

rm -rf $MODEL_DIR/*

3. Để chạy training local, ta thực hiện câu lệnh sau:

gcloud ml-engine local train 
 --module-name trainer.task 
 --package-path trainer/ 
 --job-dir $MODEL_DIR 
 --  --train-files $TRAIN_DATA 
 --eval-files $EVAL_DATA 
 --train-steps 1000 
 --eval-steps 100

KIỂM TRA LOG BẰNG TENSORBOARD

1. Mở TensorBoard:

tensorboard --logdir=$MODEL_DIR --port=8080

2. Chọn “Preview on port 8080” từ Web Preview menu ở góc trên của command line.

3. Click vào Accuracy để thấy đồ thị sự thay đổi của tiến trình.

KIỂM TRA BẰNG STACKDRIVER LOG

Tại Cloud Console chọn ML Engine > Jobs, sau đó clicl “View logs”.

– Nếu bạn muốn xem log ở terminal ta chạy dòng lệnh sau:

gcloud ml-engine jobs stream-logs $JOB_NAME

DEPLOY MODEL ĐỂ HỖ TRỢ DỰ ĐOÁN

1. MODEL_NAME=census.

2. Tạo Cloud ML Engine model.

gcloud ml-engine models create $MODEL_NAME --regions=$REGION

3. Khai báo đường dẫn output.

OUTPUT_PATH=gs://$BUCKET_NAME/census_dist_1

4. Tra cứu đường dẫn của model đã train.

gsutil ls -r $OUTPUT_PATH/export

5. Tìm thư mục $OUTPUT_PATH/export/census/<timestamp> , copy đường dẫn thư mục và set giá trị cho biến MODEL_BINARIES.

MODEL_BINARIES=gs://$BUCKET_NAME/census_dist_1/export/census/1487877383942/

6. Chạy câu lệnh để tạo version cho model.

gcloud ml-engine versions create v1 
 --model $MODEL_NAME 
 --origin $MODEL_BINARIES 
 --runtime-version 1.8

– Để xem list các model ta chạy lệnh.

gcloud ml-engine models list

GỞI MỘT DỰ ĐOÁN TRỰC TUYẾN CHO MODEL ĐÃ DEPLOY

gcloud ml-engine predict 
 --model $MODEL_NAME 
 --version v1 
 --json-instances 
 ../test.json

– Kết quả nhận được sẽ có dạng sau:

CLASSES PROBABILITIES[u'0', u'1'] [0.9969545602798462, 0.0030454816296696663]

GỬI MỘT DỰ ĐOÁN NHÓM

1. Set tên job.

JOB_NAME=census_prediction_1

2. Set đường dẫn output.

OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME

3. Gửi dự đoán.

gcloud ml-engine jobs submit prediction $JOB_NAME 
 --model $MODEL_NAME 
 --version v1 
 --data-format TEXT 
 --region $REGION 
 --input-paths $TEST_JSON 
 --output-path $OUTPUT_PATH/predictions

– Kiểm tra tiến trình.

gcloud ml-engine jobs describe $JOB_NAME

– Nếu job hoàn tất bạn sẽ thấy thông báo state: SUCCEEDED.

– Bạn cũng thể xem log bằng terminal.

gcloud ml-engine jobs stream-logs $JOB_NAME

– Sau khi job thành công bạn có thể đọc tổng kết của output.

gsutil cat $OUTPUT_PATH/predictions/prediction.results-00000-of-00001

– Bạn sẽ thấy output tương tự như sau:

{"probabilities": [0.9962924122810364, 0.003707568161189556], "logits": [-5.593664646148682], "classes": 0, "logistic": [0.003707568161189556]}

– Liệt kê những file khác mà job cung cấp sử dụng lệnh:

gsutil ls -r $OUTPUT_PATH

XOÁ TRAINING JOB

1. Mở cửa sổ terminal.

2. Sử dụng lệnh sau để xoá thư mục và các nội dung.

gsutil rm -r gs://$BUCKET_NAME/$JOB_NAME

– Nếu thành công bạn sẽ nhận được thông báo tương tự như sau:

Removing gs://my-awesome-bucket/just-a-folder/cloud-storage.logo.png#1456530077282000...
Removing gs://my-awesome-bucket/...

Pham Van Tuyen

Anh Tuyen Pham là Tổng giám đốc của Cloud Ace Việt Nam và là GDG Cloud HCM Chapter Lead. Anh là diễn giả quen thuộc tại các sự kiện do Google tổ chức tại Việt Nam như Kubernetes Vietnam, Google Cloud Next Extended. Anh đã có các chứng chỉ của Google Cloud như Google Cloud Architect và Data Engineer.

View all posts by Pham Van Tuyen →