TensorFlow.org'da görüntüleyin | Google Colab'da çalıştırın | GitHub'da görüntüle | Not defterini indir | Kaggle'da koş |
TensorFlow Cloud, Google Cloud'da Keras modellerinin eğitimini ve hiperparametre ayarlamasını kolaylaştıran bir kitaplıktır.
TensorFlow Cloud'un run
API'sini kullanarak model kodunuzu doğrudan Google Cloud hesabınıza gönderebilir ve oturum açmanıza ve Cloud kullanıcı arayüzüyle etkileşime girmenize gerek kalmadan (konsolda projenizi ayarladıktan sonra) Google Cloud bilgi işlem kaynaklarını kullanabilirsiniz.
Bu, Google Cloud bilgi işlem kaynaklarınızı doğrudan bir Python not defterinin içinden kullanabileceğiniz anlamına gelir: tıpkı bunun gibi bir not defteri! Modelleri Google Cloud'a düz bir .py
Python komut dosyasından da gönderebilirsiniz.
Basit örnek
Bu , TensorFlow Cloud ve Google Cloud kullanılarak bir modelin uzaktan nasıl eğitileceğini gösteren basit bir giriş örneğidir.
Bunun nasıl çalıştığına dair bir fikir edinmek için tamamını okuyabilir veya not defterini Google Colab'da çalıştırabilirsiniz. Not defterini çalıştırmak, bir Google Cloud hesabına bağlanıp kimlik bilgilerinizi ve proje kimliğinizi girmenizi gerektirir. Henüz bir hesabınız yoksa veya konsolda bir projeyi nasıl kuracağınızdan emin değilseniz Google Cloud Hesabınızı Kurma ve Bağlanma konusuna bakın.
Gerekli modülleri içe aktar
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
Proje Konfigürasyonları
Proje parametrelerini ayarlayın. GCP_PROJECT_ID
veya GCS_BUCKET
ne olması gerektiğini bilmiyorsanız Google Cloud Hesabınızı Kurma ve Bağlama bölümüne bakın.
JOB_NAME
isteğe bağlıdır ve onu herhangi bir dizeye ayarlayabilirsiniz. Daha büyük bir projenin parçası olarak birden fazla eğitim deneyi yapıyorsanız (örneğin), her birine benzersiz bir JOB_NAME
vermek isteyebilirsiniz.
# 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")
Google Cloud Projenizi kullanmak için not defterinin kimliğini doğrulama
Bu kod, geçerli Google Cloud kimlik bilgilerinizi ve kimliğinizi kontrol ederek not defterinin kimliğini doğrular. Yalnızca not defterinde çalıştırıldığından ve not defteri kodu Google Cloud'a gönderildiğinde çalıştırılmadığından emin olmak için if not tfc.remote()
bloğunun içindedir.
# 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
Model ve veri kurulumu
Buradan, MNIST veri kümesinde sınıflandırmayı çalıştıracak basit bir Keras modelinin kurulmasına yönelik temel prosedürü izliyoruz.
Verileri yükleme ve bölme
Ham verileri okuyun ve veri kümelerini eğitmek ve test etmek için bölün.
(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
Bir model oluşturun ve eğitime hazırlanın
Basit bir model oluşturun ve bunun için birkaç geri arama ayarlayın.
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'])
Hızlı doğrulama eğitimi
Her şeyin doğru şekilde ayarlandığından emin olmak için modeli bir (1) dönem boyunca eğiteceğiz ve bu eğitim komutunu if not
tfc.remote
içine saracağız, böylece bu yalnızca burada, sizin çalıştırdığınız çalışma zamanı ortamında gerçekleşecek. Bunu okuyorsunuz, Google Cloud'a gönderildiğinde değil.
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)
Uzaktan eğitime hazırlanın
Aşağıdaki kod, bunu okuduğunuz çalışma zamanı içinde değil, yalnızca not defteri kodu Google Cloud'a gönderildiğinde çalışacaktır.
İlk olarak, aşağıdakileri gerçekleştirecek geri aramaları ayarlıyoruz:
- TensorBoard için günlükler oluşturun.
- Kontrol noktaları oluşturun ve bunları yukarıda belirtilen kontrol noktaları dizinine kaydedin.
- Kayıp yeterince iyileşmiyorsa model eğitimini durdurun.
Daha sonra model.fit
ve model.save
adını veririz; bunlar (bu kod Google Cloud'da çalışırken) gerçekte tüm eğitimi (100 dönem) çalıştırır ve ardından eğitilen modeli GCS Paketi'ne ve yukarıda tanımlanan dizine kaydeder.
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)
Uzaktan eğitime başlayın
TensorFlow Cloud, tüm kodu yerel yürütme ortamından (bu not defteri) alır, paketler ve yürütülmek üzere Google Cloud'a gönderir. (Bu nedenle if
ve if not
tfc.remote
sarmalayıcıları önemlidir.)
Bu adım, bu not defterindeki kodunuzu uzaktan yürütmeye hazırlayacak ve ardından modeli eğitmek için Google Cloud Platform'da bir uzaktan eğitim işi başlatacak.
Öncelikle tensorflow-cloud
Python paketini bu not defterindeki kodla birlikte gönderilecek olan requirements.txt
dosyasına ekliyoruz. Gerektiğinde buraya başka paketler ekleyebilirsiniz.
Daha sonra bir GPU ve bir CPU görüntüsü belirtilir. Yalnızca birini veya diğerini belirtmeniz gerekir; Aşağıdaki kodda GPU kullanılmıştır.
Son olarak TensorFlow bulutunun kalbi: tfc.run
çağrısı. Bu işlem, bu not defterinde yürütüldüğünde, bu not defterindeki tüm kodlar ve bu dizindeki dosyaların geri kalanı paketlenecek ve yürütülmek üzere Google Cloud'a gönderilecektir. run
yöntemindeki parametreler, belirtilen GPU CPU görüntülerinin ayrıntılarını belirtir. Yalnızca birini veya diğerini belirtmeniz gerekir; Aşağıdaki kodda GPU kullanılmıştır.
Son olarak TensorFlow bulutunun kalbi: tfc.run
çağrısı. Bu işlem, bu not defterinde yürütüldüğünde, bu not defterindeki tüm kodlar ve bu dizindeki dosyaların geri kalanı paketlenecek ve yürütülmek üzere Google Cloud'a gönderilecektir. run
yöntemindeki parametreler GPU ve CPU görüntülerinin ayrıntılarını belirtir. Yalnızca birini veya diğerini belirtmeniz gerekir; Aşağıdaki kodda GPU kullanılmıştır.
Son olarak TensorFlow bulutunun kalbi: tfc.run
çağrısı. Bu işlem, bu not defterinde yürütüldüğünde, bu not defterindeki tüm kodlar ve bu dizindeki dosyaların geri kalanı paketlenecek ve yürütülmek üzere Google Cloud'a gönderilecektir. run
yöntemindeki parametreler, yürütme ortamının ayrıntılarını ve kullanılacak dağıtım stratejisini (varsa) belirtir.
İş gönderildikten sonra Tensorboard aracılığıyla işin ilerlemesini izlemek için bir sonraki adıma geçebilirsiniz.
# 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}
)
Eğitim Sonuçları
Colab örneğinizi yeniden bağlayın
Uzaktan eğitim işlerinin çoğu uzun sürüyor. Colab kullanıyorsanız eğitim sonuçlarının alınmasından önce zaman aşımına uğrayabilir.
Bu durumda Colab örneğinizi yeniden bağlamak ve eğitim sonuçlarına erişecek şekilde yapılandırmak için aşağıdaki bölümleri yeniden çalıştırın .
- Gerekli modülleri içe aktar
- Proje Konfigürasyonları
- Google Cloud Projenizi kullanmak için not defterinin kimliğini doğrulama
Kodun geri kalanını yeniden ÇALIŞTIRMAYIN .
Tensorboard'u Yükle
Eğitim devam ederken sonuçları görüntülemek için Tensorboard'u kullanabilirsiniz. Sonuçların yalnızca antrenmanınız başladıktan sonra gösterileceğini unutmayın. Bu birkaç dakika sürebilir.
%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR
Eğitilen modelinizi yükleyin
Eğitim tamamlandıktan sonra modelinizi yukarıda belirttiğiniz GCS Kovasından alabilirsiniz.
trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()