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 Datasets استفاده می کنید، داده های دانلود شده و آماده شده در یک فهرست محلی (به طور پیش فرض ~/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 را اجرا کنید.