คู่มือการใช้งาน

tfc.run API ช่วยให้คุณฝึกโมเดลในวงกว้างบน GCP

tfc.run API สามารถใช้ได้สี่วิธี สิ่งนี้ถูกกำหนดโดยตำแหน่งที่คุณใช้งาน API (สคริปต์ Python เทียบกับสมุดบันทึก Python) และพารามิเตอร์ entry_point ของคุณ:

  • ไฟล์ Python เป็น entry_point
  • ไฟล์ Notebook เป็น entry_point
  • run ภายในสคริปต์ Python ที่มีโมเดล tf.keras
  • run ภายในสคริปต์สมุดบันทึกที่มีโมเดล tf.keras วิธีที่พบบ่อยที่สุดคือการใช้ run ภายในโน้ตบุ๊ก

entry_point คือ (พาธไปยัง) สคริปต์ Python หรือไฟล์โน้ตบุ๊ก หรือ None หาก None ไฟล์ปัจจุบันทั้งหมดจะถูกส่งไปยัง Google Cloud

การใช้ไฟล์ Python เป็น entry_point

หากคุณมีโมเดล tf.keras ในไฟล์ python ( mnist_example.py ) คุณสามารถเขียนสคริปต์ง่ายๆ ต่อไปนี้ ( scale_mnist.py ) เพื่อปรับขนาดโมเดลของคุณบน GCP

import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.py')

โปรดทราบว่าไฟล์ทั้งหมดในแผนผังไดเร็กทอรีเดียวกันกับ entry_point จะถูกรวมไว้ในอิมเมจนักเทียบท่าที่สร้างขึ้น พร้อมด้วยไฟล์ entry_point ขอแนะนำให้สร้างไดเร็กทอรีใหม่เพื่อจัดเก็บโปรเจ็กต์บนคลาวด์แต่ละโปรเจ็กต์ซึ่งประกอบด้วยไฟล์ที่จำเป็นและไม่มีอะไรอื่นอีก เพื่อเพิ่มประสิทธิภาพเวลาในการสร้างอิมเมจ

การใช้ไฟล์โน้ตบุ๊กเป็น entry_point

หากคุณมีโมเดล tf.keras ในไฟล์โน้ตบุ๊ก ( mnist_example.ipynb ) คุณสามารถเขียนสคริปต์ง่ายๆ ต่อไปนี้ ( scale_mnist.py ) เพื่อปรับขนาดโมเดลของคุณบน GCP

import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.ipynb')

โปรดทราบว่าไฟล์ทั้งหมดในแผนผังไดเร็กทอรีเดียวกันกับ entry_point จะถูกรวมไว้ในอิมเมจนักเทียบท่าที่สร้างขึ้น พร้อมด้วยไฟล์ entry_point เช่นเดียวกับสคริปต์ Python entry_point ด้านบน เราขอแนะนำให้สร้างไดเร็กทอรีใหม่เพื่อเก็บโปรเจ็กต์บนคลาวด์แต่ละโปรเจ็กต์ซึ่งประกอบด้วยไฟล์ที่จำเป็นและไม่มีอะไรอื่นอีก เพื่อปรับเวลาในการสร้างอิมเมจให้เหมาะสมที่สุด

การใช้ run ภายในสคริปต์ Python ที่มีโมเดล tf.keras

คุณสามารถใช้ run API จากภายในไฟล์ python ของคุณที่มีโมเดล tf.keras ( mnist_scale.py ) ในกรณีการใช้งานนี้ entry_point ควรเป็น None คุณสามารถเรียก API run ได้ทุกที่ และไฟล์ทั้งหมดจะถูกดำเนินการจากระยะไกล คุณสามารถเรียก API ในตอนท้ายเพื่อเรียกใช้สคริปต์ในเครื่องเพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง (อาจมียุคและแฟล็กอื่นๆ น้อยลง)

import tensorflow_datasets as tfds
import tensorflow as tf
import tensorflow_cloud as tfc

tfc.run(
    entry_point=None,
    distribution_strategy='auto',
    requirements_txt='requirements.txt',
    chief_config=tfc.MachineConfig(
            cpu_cores=8,
            memory=30,
            accelerator_type=tfc.AcceleratorType.NVIDIA_TESLA_T4,
            accelerator_count=2),
    worker_count=0)

datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True)
mnist_train, mnist_test = datasets['train'], datasets['test']

num_train_examples = info.splits['train'].num_examples
num_test_examples = info.splits['test'].num_examples

BUFFER_SIZE = 10000
BATCH_SIZE = 64

def scale(image, label):
    image = tf.cast(image, tf.float32)
    image /= 255
    return image, label

train_dataset = mnist_train.map(scale).cache()
train_dataset = train_dataset.shuffle(BUFFER_SIZE).batch(BATCH_SIZE)

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(
        28, 28, 1)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(loss='sparse_categorical_crossentropy',
              optimizer=tf.keras.optimizers.Adam(),
              metrics=['accuracy'])
model.fit(train_dataset, epochs=12)

โปรดทราบว่าไฟล์ทั้งหมดในแผนผังไดเร็กทอรีเดียวกันกับสคริปต์ python จะถูกรวมเป็นแพ็กเกจในอิมเมจนักเทียบท่าที่สร้างขึ้นพร้อมกับไฟล์ python ขอแนะนำให้สร้างไดเร็กทอรีใหม่เพื่อจัดเก็บโปรเจ็กต์บนคลาวด์แต่ละโปรเจ็กต์ซึ่งประกอบด้วยไฟล์ที่จำเป็นและไม่มีอะไรอื่นอีก เพื่อเพิ่มประสิทธิภาพเวลาในการสร้างอิมเมจ

การใช้ run ภายในสคริปต์สมุดบันทึกที่มีโมเดล tf.keras

รูปภาพของโคแล็บ

ในกรณีการใช้งานนี้ entry_point ควรเป็น None และต้องระบุ docker_config.image_build_bucket เพื่อให้แน่ใจว่าสามารถจัดเก็บและเผยแพร่บิลด์ได้

จะเกิดอะไรขึ้นเมื่อคุณเรียก run ?

การเรียก API จะดำเนินการดังต่อไปนี้:

  1. เตรียมเอนทิตีโค้ด เช่น สคริปต์ Keras/โน้ตบุ๊ก คลาวด์ และการแจกจ่ายให้พร้อม
  2. การแปลงเอนทิตีการแจกจ่ายนี้เป็น คอนเทนเนอร์นักเทียบท่า ที่มีการขึ้นต่อกันที่จำเป็น
  3. ปรับใช้ คอนเทนเนอร์นี้ตามขนาดและฝึกอบรมโดยใช้กลยุทธ์การกระจาย TensorFlow
  4. สตรีมบันทึก และตรวจสอบบน TensorBoard ที่โฮสต์ จัดการพื้นที่เก็บข้อมูลจุดตรวจ

ตามค่าเริ่มต้น Docker daemon ในเครื่องสำหรับการสร้างและเผยแพร่อิมเมจ Docker ไปยังรีจิสทรีคอนเทนเนอร์ของ Google รูปภาพได้รับการเผยแพร่ไปที่ gcr.io/your-gcp-project-id หากคุณระบุ docker_config.image_build_bucket เราจะใช้ Google Cloud build เพื่อสร้างและเผยแพร่อิมเมจนักเทียบท่า

แพลตฟอร์ม Google AI ใช้สำหรับปรับใช้อิมเมจ Docker บน Google Cloud