TensorFlow Bulut

TensorFlow.org'da görüntüleyin Google Colab'de çalıştırın GitHub'da görüntüle Defteri indirin Kaggle logosuKaggle'da koş

TensorFlow Cloud, Google Cloud'da Keras modellerinin eğitimini ve hiperparametre ayarlamasını yapmayı 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 Cloud UI ile oturum açıp etkileşime girmenize gerek kalmadan (konsolda projenizi ayarladıktan sonra) Google Cloud hesaplama kaynaklarını kullanabilirsiniz.

Bu, Google Cloud hesaplama kaynaklarınızı doğrudan bir Python not defterinin içinden kullanabileceğiniz anlamına gelir: aynen 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 baştan sona okuyabilir veya not defterini Google Colab'da çalıştırabilirsiniz. Not defterini çalıştırmak, bir Google Cloud hesabına bağlanmanızı ve 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 Bulut Hesabınızı Kurma ve Bağlama konusuna bakın.

Gerekli modülleri içe aktarın

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 Yapılandırmaları

Proje parametrelerini ayarlayın. GCP_PROJECT_ID veya GCS_BUCKET ne olması gerektiğini bilmiyorsanız, bkz. Google Cloud Hesabınızı Ayarlama ve Bağlama .

JOB_NAME isteğe bağlıdır ve herhangi bir dizeye ayarlayabilirsiniz. Daha büyük bir projenin parçası olarak birden fazla eğitim denemesi yapıyorsanız (örneğin), her birine benzersiz bir JOB_NAME vermek JOB_NAME .

# 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ılmasını sağlamak için if not tfc.remote() bloğunun if not tfc.remote() ve not defteri kodu Google Cloud'a gönderildiğinde çalıştırılmaz.

# 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, sınıflandırmayı MNIST veri kümesinde çalıştırmak için basit bir Keras modeli kurmaya yönelik temel prosedürü izliyoruz.

Verileri yükleme ve bölme

Veri kümelerini eğitmek ve test etmek için ham verileri okuyun ve 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 çağırma 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 kurulduğundan emin olmak için modeli bir (1) dönem için eğiteceğiz ve bu eğitim komutunu tfc.remote if not tfc.remote ; Google Cloud'a gönderildiğinde değil, okuyor.

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, yalnızca not defteri kodu bunu okuduğunuz çalışma zamanında değil, Google Cloud'a gönderildiğinde çalışacaktır.

İlk olarak, şunları yapacak geri aramalar oluşturuyoruz:

  • TensorBoard için günlükler oluşturun.
  • Kontrol noktaları oluşturun ve bunları yukarıda belirtilen kontrol noktaları dizinine kaydedin.
  • Kayıp yeterince gelişmiyorsa model eğitimini durdurun.

Ardından, (bu kod Google Cloud üzerinde çalışırken) tam eğitimi (100 epochs) çalıştıran ve ardından eğitimli modeli GCS Bucket ve yukarıda tanımlanan dizine model.save model.fit ve model.save adlandırılır.

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ğitimi başlatın

TensorFlow Cloud, tüm kodu yerel yürütme ortamından (bu not defteri) alır, tamamlar ve yürütme için Google Cloud'a gönderir. (Bu nedenle, if ve if not tfc.remote sarmalayıcıları önemlidir.)

Bu adım, kodunuzu bu not defterinden uzaktan yürütme için hazırlayacak ve ardından modeli eğitmek için Google Cloud Platform'da bir uzaktan eğitim işi başlatacaktır.

Önce tensorflow-cloud Python paketini, bu not defterindeki kodla birlikte gönderilecek olan bir requirements.txt dosyasına tensorflow-cloud . Gerektiği gibi buraya başka paketler ekleyebilirsiniz.

Ardından bir GPU ve bir CPU görüntüsü belirlenir. Yalnızca birini veya diğerini belirtmeniz gerekir; GPU aşağıdaki kodda kullanılır.

Son olarak, TensorFlow bulutunun kalp: çağrı için tfc.run . Bu not defterinde yürütüldüğünde, bu defterdeki tüm kod ve bu dizindeki diğer dosyalar 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; GPU aşağıdaki kodda kullanılır.

Son olarak, TensorFlow bulutunun kalp: çağrı için tfc.run . Bu not defterinde yürütüldüğünde, bu defterdeki tüm kod ve bu dizindeki diğer dosyalar 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; GPU aşağıdaki kodda kullanılır.

Son olarak, TensorFlow bulutunun kalp: çağrı için tfc.run . Bu not defterinde yürütüldüğünde, bu defterdeki tüm kod ve bu dizindeki diğer dosyalar 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, işlerin ilerlemesini Tensorboard aracılığıyla 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

Çoğu uzaktan eğitim işi uzun sürüyor. Colab kullanıyorsanız, eğitim sonuçları alınmadan önce zaman aşımına uğrayabilir.

Bu durumda, Colab örneğinizi eğitim sonuçlarına erişmek üzere yeniden bağlamak ve yapılandırmak için aşağıdaki bölümleri yeniden çalıştırın .

  1. Gerekli modülleri içe aktarın
  2. Proje Yapılandırmaları
  3. Google Cloud Projenizi kullanmak için not defterinin kimliğini doğrulama

Kodun geri kalanını yeniden ÇALIŞTIRMAYIN .

Yük Tensorboard

Eğitim devam ederken sonuçları görüntülemek için Tensorboard'u kullanabilirsiniz. Sonuçların yalnızca eğitiminiz başladıktan sonra gösterileceğini unutmayın. Bu bir kaç dakika alabilir.

%load_ext tensorboard
%tensorboard --logdir $TENSORBOARD_LOGS_DIR

Eğitimli modelinizi yükleyin

Eğitim tamamlandıktan sonra, modelinizi yukarıda belirttiğiniz GCS Paketinden alabilirsiniz.

trained_model = tf.keras.models.load_model(SAVED_MODEL_DIR)
trained_model.summary()