tfds และ Google Cloud Storage

Google Cloud Storage (GCS) สามารถใช้กับ tfds ได้ด้วยเหตุผลหลายประการ:

  • จัดเก็บข้อมูลที่ประมวลผลไว้ล่วงหน้า
  • การเข้าถึงชุดข้อมูลที่มีข้อมูลเก็บไว้ใน GCS

เข้าถึงผ่านที่เก็บข้อมูล TFDS GCS

ชุดข้อมูลบางชุดพร้อมใช้งานโดยตรงในที่เก็บข้อมูล GCS ของเรา gs://tfds-data/datasets/ โดยไม่ต้องมีการตรวจสอบสิทธิ์:

  • หาก tfds.load(..., try_gcs=False) (ค่าเริ่มต้น) ชุดข้อมูลจะถูกคัดลอกแบบโลคัลใน ~/tensorflow_datasets ระหว่าง download_and_prepare
  • หาก tfds.load(..., try_gcs=True) ชุดข้อมูลจะถูกสตรีมโดยตรงจาก GCS ( download_and_prepare จะถูกข้าม)

คุณสามารถตรวจสอบว่าชุดข้อมูลโฮสต์อยู่ในที่เก็บข้อมูลสาธารณะด้วย tfds.is_dataset_on_gcs('mnist')

การรับรองความถูกต้อง

ก่อนเริ่มต้น คุณควรตัดสินใจว่าต้องการตรวจสอบสิทธิ์อย่างไร มีสามตัวเลือก:

  • ไม่มีการรับรองความถูกต้อง (หรือการเข้าถึงแบบไม่ระบุชื่อ)
  • โดยใช้บัญชี Google ของคุณ
  • ใช้บัญชีบริการ (สามารถแชร์กับผู้อื่นในทีมของคุณได้อย่างง่ายดาย)

คุณสามารถดูข้อมูลโดยละเอียดได้ใน เอกสารประกอบของ Google Cloud

คำแนะนำแบบง่าย

หากคุณเรียกใช้จาก colab คุณจะตรวจสอบสิทธิ์กับบัญชีของคุณได้ แต่ทำงาน:

from google.colab import auth
auth.authenticate_user()

หากคุณทำงานบนเครื่องท้องถิ่นของคุณ (หรือใน VM) คุณสามารถตรวจสอบสิทธิ์กับบัญชีของคุณได้โดยการเรียกใช้:

gcloud auth application-default login

หากคุณต้องการเข้าสู่ระบบด้วยบัญชีบริการ ให้ดาวน์โหลดไฟล์คีย์ JSON และตั้งค่า

export GOOGLE_APPLICATION_CREDENTIALS=<JSON_FILE_PATH>

การใช้ Google Cloud Storage เพื่อจัดเก็บข้อมูลที่ประมวลผลล่วงหน้า

โดยปกติเมื่อคุณใช้ชุดข้อมูล TensorFlow ข้อมูลที่ดาวน์โหลดและเตรียมไว้จะถูกแคชไว้ในไดเรกทอรีภายในเครื่อง (ตามค่าเริ่มต้น ~/tensorflow_datasets )

ในบางสภาพแวดล้อมที่ดิสก์ในเครื่องอาจเป็นชั่วคราว (เซิร์ฟเวอร์คลาวด์ชั่วคราวหรือ โน้ตบุ๊ก Colab ) หรือคุณต้องการให้เครื่องหลายเครื่องเข้าถึงข้อมูลได้ จะมีประโยชน์ในการตั้ง data_dir เป็นระบบจัดเก็บข้อมูลบนคลาวด์ เช่น Google Cloud Storage (GCS) ถัง.

ยังไง?

สร้างที่เก็บข้อมูล GCS และตรวจสอบว่าคุณ (หรือบัญชีบริการของคุณ) มีสิทธิ์อ่าน/เขียน (ดูคำแนะนำในการให้สิทธิ์ด้านบน)

เมื่อคุณใช้ tfds คุณสามารถตั้ง data_dir เป็น "gs://YOUR_BUCKET_NAME"

ds_train, ds_test = tfds.load(name="mnist", split=["train", "test"], data_dir="gs://YOUR_BUCKET_NAME")

ข้อควรระวัง:

  • วิธีการนี้ใช้ได้กับชุดข้อมูลที่ใช้ tf.io.gfile สำหรับการเข้าถึงข้อมูลเท่านั้น นี่เป็นเรื่องจริงสำหรับชุดข้อมูลส่วนใหญ่ แต่ไม่ใช่ทั้งหมด
  • โปรดทราบว่าการเข้าถึง GCS คือการเข้าถึงเซิร์ฟเวอร์ระยะไกลและสตรีมข้อมูลจากเซิร์ฟเวอร์ดังกล่าว ดังนั้นคุณอาจต้องเสียค่าใช้จ่ายด้านเครือข่าย

การเข้าถึงชุดข้อมูลที่เก็บไว้ใน GCS

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

หากชุดข้อมูลต้องมีการตรวจสอบสิทธิ์ โปรดใช้คำแนะนำด้านบนเพื่อตัดสินใจว่าคุณต้องการตัวเลือกใด (บัญชีของตัวเองเทียบกับบัญชีบริการ) และแจ้งชื่อบัญชี (หรือที่เรียกว่าอีเมล) ให้กับเจ้าของชุดข้อมูล หลังจากที่เปิดให้เข้าถึงไดเรกทอรี GCS แล้ว คุณควรเรียกใช้โค้ดดาวน์โหลด tfds ได้