Lihat di TensorFlow.org | Lihat di GitHub | Unduh buku catatan | Jalankan di Kaggle |
TensorFlow Cloud adalah perpustakaan yang memudahkan melakukan pelatihan dan penyesuaian hyperparameter model Keras di Google Cloud.
Dengan menggunakan API run
TensorFlow Cloud, Anda dapat mengirim kode model langsung ke akun Google Cloud Anda, dan menggunakan sumber daya komputasi Google Cloud tanpa perlu login dan berinteraksi dengan Cloud UI (setelah Anda menyiapkan proyek di konsol).
Artinya, Anda dapat menggunakan sumber daya komputasi Google Cloud langsung dari dalam buku catatan Python: buku catatan seperti ini! Anda juga dapat mengirim model ke Google Cloud dari skrip Python .py
biasa.
Contoh sederhana
Ini adalah contoh pengantar sederhana untuk menunjukkan cara melatih model dari jarak jauh menggunakan TensorFlow Cloud dan Google Cloud.
Anda cukup membacanya untuk mendapatkan gambaran tentang cara kerjanya, atau Anda dapat menjalankan notebook di Google Colab. Menjalankan notebook memerlukan koneksi ke akun Google Cloud dan memasukkan kredensial serta ID proyek Anda. Lihat Menyiapkan dan Menghubungkan ke Akun Google Cloud Anda jika Anda belum memiliki akun atau tidak yakin cara menyiapkan proyek di konsol.
Impor modul yang diperlukan
import tensorflow as tf
tf.version.VERSION
'2.6.0'
! pip install -q tensorflow-cloud
import tensorflow_cloud as tfc
print(tfc.__version__)
import sys
Konfigurasi Proyek
Tetapkan parameter proyek. Jika Anda tidak tahu seperti apa seharusnya GCP_PROJECT_ID
atau GCS_BUCKET
Anda, lihat Menyiapkan dan Menghubungkan ke Akun Google Cloud Anda .
JOB_NAME
bersifat opsional, dan Anda dapat menyetelnya ke string apa pun. Jika Anda melakukan beberapa eksperimen pelatihan (misalnya) sebagai bagian dari proyek yang lebih besar, Anda mungkin ingin memberikan masing-masing eksperimen tersebut sebuah JOB_NAME
yang unik.
# Set Google Cloud Specific parameters
# TODO: Please set GCP_PROJECT_ID to your own Google Cloud project ID.
GCP_PROJECT_ID = 'YOUR_PROJECT_ID'
# TODO: set GCS_BUCKET to your own Google Cloud Storage (GCS) bucket.
GCS_BUCKET = 'YOUR_GCS_BUCKET_NAME'
# DO NOT CHANGE: Currently only the 'us-central1' region is supported.
REGION = 'us-central1'
# OPTIONAL: You can change the job name to any string.
JOB_NAME = 'mnist'
# Setting location were training logs and checkpoints will be stored
GCS_BASE_PATH = f'gs://{GCS_BUCKET}/{JOB_NAME}'
TENSORBOARD_LOGS_DIR = os.path.join(GCS_BASE_PATH,"logs")
MODEL_CHECKPOINT_DIR = os.path.join(GCS_BASE_PATH,"checkpoints")
SAVED_MODEL_DIR = os.path.join(GCS_BASE_PATH,"saved_model")
Mengautentikasi notebook untuk menggunakan Proyek Google Cloud Anda
Kode ini mengautentikasi notebook, memeriksa kredensial dan identitas Google Cloud Anda yang valid. Itu ada di dalam blok if not tfc.remote()
untuk memastikan bahwa itu hanya dijalankan di notebook, dan tidak akan dijalankan ketika kode notebook dikirim ke Google Cloud.
# Using tfc.remote() to ensure this code only runs in notebook
if not tfc.remote():
# Authentication for Kaggle Notebooks
if "kaggle_secrets" in sys.modules:
from kaggle_secrets import UserSecretsClient
UserSecretsClient().set_gcloud_credentials(project=GCP_PROJECT_ID)
# Authentication for Colab Notebooks
if "google.colab" in sys.modules:
from google.colab import auth
auth.authenticate_user()
os.environ["GOOGLE_CLOUD_PROJECT"] = GCP_PROJECT_ID
Penyiapan model dan data
Dari sini kita mengikuti prosedur dasar untuk menyiapkan model Keras sederhana untuk menjalankan klasifikasi pada kumpulan data MNIST.
Memuat dan membagi data
Membaca data mentah dan membaginya untuk melatih dan menguji kumpulan data.
(x_train, y_train), (_, _) = tf.keras.datasets.mnist.load_data()
x_train = x_train.reshape((60000, 28 * 28))
x_train = x_train.astype('float32') / 255
Buat model dan persiapkan untuk pelatihan
Buat model sederhana dan atur beberapa callback untuk model tersebut.
from tensorflow.keras import layers
model = tf.keras.Sequential([
tf.keras.layers.Dense(512, activation='relu', input_shape=(28 * 28,)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(loss='sparse_categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(),
metrics=['accuracy'])
Pelatihan validasi cepat
Kami akan melatih model untuk satu (1) epoch hanya untuk memastikan semuanya sudah diatur dengan benar, dan kami akan menggabungkan perintah pelatihan tersebut if not
tfc.remote
, sehingga hanya terjadi di sini, di lingkungan runtime tempat Anda sedang membaca ini, bukan saat dikirim ke Google Cloud.
if not tfc.remote():
# Run the training for 1 epoch and a small subset of the data to validate setup
model.fit(x=x_train[:100], y=y_train[:100], validation_split=0.2, epochs=1)
Mempersiapkan pelatihan jarak jauh
Kode di bawah ini hanya akan berjalan ketika kode notebook dikirim ke Google Cloud, bukan di dalam runtime saat Anda membaca ini.
Pertama, kami menyiapkan callback yang akan:
- Buat log untuk TensorBoard .
- Buat pos pemeriksaan dan simpan ke direktori pos pemeriksaan yang ditentukan di atas.
- Hentikan pelatihan model jika kerugian tidak cukup membaik.
Kemudian kita memanggil model.fit
dan model.save
, yang (saat kode ini berjalan di Google Cloud) yang benar-benar menjalankan pelatihan penuh (100 epoch) dan kemudian menyimpan model yang dilatih di Bucket GCS dan direktori yang ditentukan di atas.
if tfc.remote():
# Configure Tensorboard logs
callbacks=[
tf.keras.callbacks.TensorBoard(log_dir=TENSORBOARD_LOGS_DIR),
tf.keras.callbacks.ModelCheckpoint(
MODEL_CHECKPOINT_DIR,
save_best_only=True),
tf.keras.callbacks.EarlyStopping(
monitor='loss',
min_delta =0.001,
patience=3)]
model.fit(x=x_train, y=y_train, epochs=100,
validation_split=0.2, callbacks=callbacks)
model.save(SAVED_MODEL_DIR)
Mulai pelatihan jarak jauh
TensorFlow Cloud mengambil semua kode dari lingkungan eksekusi lokalnya (notebook ini), membungkusnya, dan mengirimkannya ke Google Cloud untuk dieksekusi. (Itulah mengapa pembungkus if
dan if not
tfc.remote
penting.)
Langkah ini akan menyiapkan kode Anda dari notebook ini untuk eksekusi jarak jauh dan kemudian memulai tugas pelatihan jarak jauh di Google Cloud Platform untuk melatih modelnya.
Pertama kita menambahkan paket tensorflow-cloud
Python ke file requirements.txt
, yang akan dikirim bersama dengan kode di notebook ini. Anda dapat menambahkan paket lain di sini sesuai kebutuhan.
Kemudian GPU dan gambar CPU ditentukan. Anda hanya perlu menentukan satu atau lainnya; GPU digunakan dalam kode berikut.
Terakhir, inti dari cloud TensorFlow: panggilan ke tfc.run
. Saat ini dijalankan di dalam notebook ini, semua kode dari notebook ini, dan file lainnya di direktori ini, akan dikemas dan dikirim ke Google Cloud untuk dieksekusi. Parameter pada metode run
menentukan detail gambar CPU GPU yang ditentukan. Anda hanya perlu menentukan satu atau lainnya; GPU digunakan dalam kode berikut.
Terakhir, inti dari cloud TensorFlow: panggilan ke tfc.run
. Saat ini dijalankan di dalam notebook ini, semua kode dari notebook ini, dan file lainnya di direktori ini, akan dikemas dan dikirim ke Google Cloud untuk dieksekusi. Parameter pada metode run
menentukan detail gambar GPU dan CPU yang ditentukan. Anda hanya perlu menentukan satu atau lainnya; GPU digunakan dalam kode berikut.
Terakhir, inti dari cloud TensorFlow: panggilan ke tfc.run
. Saat ini dijalankan di dalam notebook ini, semua kode dari notebook ini, dan file lainnya di direktori ini, akan dikemas dan dikirim ke Google Cloud untuk dieksekusi. Parameter pada metode run
menentukan rincian lingkungan eksekusi dan strategi distribusi (jika ada) yang akan digunakan.
Setelah tugas dikirimkan, Anda dapat melanjutkan ke langkah berikutnya untuk memantau kemajuan tugas melalui Tensorboard.
# If you are using a custom image you can install modules via requirements
# txt file.
with open('requirements.txt','w') as f:
f.write('tensorflow-cloud\n')
# Optional: Some recommended base images. If you provide none the system
# will choose one for you.
TF_GPU_IMAGE= "tensorflow/tensorflow:latest-gpu"
TF_CPU_IMAGE= "tensorflow/tensorflow:latest"
# Submit a single node training job using GPU.
tfc.run(
distribution_strategy='auto',
requirements_txt='requirements.txt',
docker_config=tfc.DockerConfig(
parent_image=TF_GPU_IMAGE,
image_build_bucket=GCS_BUCKET
),
chief_config=tfc.COMMON_MACHINE_CONFIGS['K80_1X'],
job_labels={'job': JOB_NAME}
)
Hasil Pelatihan
Hubungkan kembali instance Colab Anda
Sebagian besar pekerjaan pelatihan jarak jauh berlangsung lama. Jika Anda menggunakan Colab, mungkin waktu habis sebelum hasil pelatihan tersedia.
Jika demikian, jalankan kembali bagian berikut untuk menyambungkan kembali dan mengonfigurasi instance Colab Anda untuk mengakses hasil pelatihan.
- Impor modul yang diperlukan
- Konfigurasi Proyek
- Mengautentikasi notebook untuk menggunakan Proyek Google Cloud Anda
JANGAN jalankan kembali sisa kode.
Muat Papan Tensor
Saat pelatihan sedang berlangsung, Anda dapat menggunakan Tensorboard untuk melihat hasilnya. Perhatikan bahwa hasilnya hanya akan terlihat setelah pelatihan Anda dimulai. Ini mungkin memakan waktu beberapa menit.
%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR
Muat model terlatih Anda
Setelah pelatihan selesai, Anda dapat mengambil model dari Bucket GCS yang Anda tentukan di atas.
trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()