TF হাব থেকে ক্যাশিং মডেল ডাউনলোড

ওভারভিউ

tensorflow_hub লাইব্রেরি বর্তমানে মডেল ডাউনলোড করার জন্য দুটি মোড সমর্থন করে। ডিফল্টরূপে, একটি মডেল একটি সংকুচিত সংরক্ষণাগার হিসাবে ডাউনলোড করা হয় এবং ডিস্কে ক্যাশে করা হয়। দ্বিতীয়ত, মডেলগুলি সরাসরি দূরবর্তী স্টোরেজ থেকে টেনসরফ্লোতে পড়া যেতে পারে। যেভাবেই হোক, প্রকৃত পাইথন কোডে tensorflow_hub ফাংশনগুলিতে কলগুলি মডেলগুলির ক্যানোনিকাল tfhub.dev URL ব্যবহার করতে পারে এবং চালিয়ে যেতে পারে, যা সমস্ত সিস্টেম জুড়ে বহনযোগ্য এবং ডকুমেন্টেশনের জন্য নেভিগেবল। বিরল ক্ষেত্রে যে ব্যবহারকারী কোডের প্রকৃত ফাইল সিস্টেম অবস্থান প্রয়োজন (ডাউনলোড এবং ডিকম্প্রেস করার পরে, অথবা একটি ফাইল সিস্টেম পাথে একটি মডেল হ্যান্ডেল সমাধান করার পরে), এটি hub.resolve(handle) ফাংশন দ্বারা প্রাপ্ত করা যেতে পারে।

সংকুচিত ডাউনলোডের ক্যাশিং

tensorflow_hub লাইব্রেরি ডিফল্টভাবে ফাইল সিস্টেমে মডেল ক্যাশে করে যখন সেগুলি tfhub.dev (বা অন্যান্য হোস্টিং সাইট ) থেকে ডাউনলোড করা হয় এবং ডিকম্প্রেস করা হয়। এই মোডটি বেশিরভাগ পরিবেশের জন্য সুপারিশ করা হয়, ব্যতীত যদি ডিস্কে স্থানের অভাব হয় তবে নেটওয়ার্ক ব্যান্ডউইথ এবং লেটেন্সি দুর্দান্ত।

একটি স্থানীয় অস্থায়ী ডিরেক্টরিতে ডাউনলোড অবস্থান ডিফল্ট হয় কিন্তু পরিবেশ পরিবর্তনশীল TFHUB_CACHE_DIR (প্রস্তাবিত) সেট করে বা কমান্ড-লাইন ফ্ল্যাগ --tfhub_cache_dir পাস করে কাস্টমাইজ করা যেতে পারে। ডিফল্ট ক্যাশে অবস্থান /tmp/tfhub_modules (বা যাই হোক না কেন os.path.join(tempfile.gettempdir(), "tfhub_modules") এর মূল্যায়ন করা হয়) বেশিরভাগ ক্ষেত্রে কাজ করা উচিত।

যে ব্যবহারকারীরা সিস্টেম রিবুট জুড়ে ক্রমাগত ক্যাশিং পছন্দ করেন তারা পরিবর্তে তাদের হোম ডিরেক্টরিতে একটি অবস্থানে TFHUB_CACHE_DIR সেট করতে পারেন। উদাহরণস্বরূপ, একটি লিনাক্স সিস্টেমের ব্যাশ শেল ব্যবহারকারী ~/.bashrc এ নিম্নলিখিতগুলির মতো একটি লাইন যোগ করতে পারে

export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules

...শেল পুনরায় চালু করুন, এবং তারপর এই অবস্থান ব্যবহার করা হবে। একটি ক্রমাগত অবস্থান ব্যবহার করার সময়, কোন স্বয়ংক্রিয় ক্লিনআপ নেই যে সচেতন থাকুন.

রিমোট স্টোরেজ থেকে পড়া

ব্যবহারকারীরা স্থানীয়ভাবে মডেলগুলি ডাউনলোড করার পরিবর্তে দূরবর্তী স্টোরেজ (GCS) থেকে মডেলগুলি সরাসরি পড়ার জন্য tensorflow_hub লাইব্রেরিকে নির্দেশ দিতে পারে

os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"

অথবা কমান্ড-লাইন পতাকা --tfhub_model_load_format কে UNCOMPRESSED এ সেট করে। এইভাবে, কোন ক্যাশিং ডিরেক্টরির প্রয়োজন নেই, যা বিশেষ করে এমন পরিবেশে সহায়ক যেগুলি ডিস্কে সামান্য স্থান কিন্তু দ্রুত ইন্টারনেট সংযোগ প্রদান করে।

Colab নোটবুকে TPU-তে চলছে

colab.research.google.com- এ, কম্প্রেসড মডেলগুলি ডাউনলোড করা TPU রানটাইমের সাথে বিরোধ করবে কারণ গণনার কাজের চাপটি ডিফল্টরূপে ক্যাশে অবস্থানে অ্যাক্সেস নেই এমন অন্য মেশিনে অর্পণ করা হয়। এই পরিস্থিতির জন্য দুটি সমাধান আছে:

1) একটি GCS বালতি ব্যবহার করুন যা TPU কর্মী অ্যাক্সেস করতে পারে

সবচেয়ে সহজ সমাধান হল tensorflow_hub লাইব্রেরীকে TF Hub-এর GCS বাকেট থেকে মডেলগুলি পড়ার নির্দেশ দেওয়া যেমন উপরে ব্যাখ্যা করা হয়েছে। তাদের নিজস্ব GCS বালতি সহ ব্যবহারকারীরা পরিবর্তে কোড সহ ক্যাশে অবস্থান হিসাবে তাদের বালতিতে একটি ডিরেক্টরি নির্দিষ্ট করতে পারেন

import os
os.environ["TFHUB_CACHE_DIR"] = "gs://my-bucket/tfhub-modules-cache"

... tensorflow_hub লাইব্রেরি কল করার আগে।

2) Colab হোস্টের মাধ্যমে সমস্ত রিডাইরেক্ট করুন

আরেকটি সমাধান হল Colab হোস্টের মাধ্যমে সমস্ত রিড (এমনকি বড় ভেরিয়েবলেরও) রিডাইরেক্ট করা:

load_options =
tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
reloaded_model = hub.load("https://tfhub.dev/...", options=load_options)

দ্রষ্টব্য: এখানে বৈধ হ্যান্ডেল সম্পর্কিত আরও তথ্য দেখুন।