ภาพรวม
ขณะนี้ไลบรารี tensorflow_hub
รองรับสองโหมดสำหรับการดาวน์โหลดโมเดล ตามค่าเริ่มต้น โมเดลจะถูกดาวน์โหลดเป็นไฟล์บีบอัดและแคชไว้บนดิสก์ ประการที่สอง สามารถอ่านโมเดลได้โดยตรงจากที่จัดเก็บข้อมูลระยะไกลไปยัง TensorFlow ไม่ว่าจะด้วยวิธีใด การเรียกฟังก์ชัน tensorflow_hub
ในโค้ด Python จริงสามารถและควรใช้ Canonical 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
เป็นตำแหน่งในโฮมไดเร็กตอรี่ของตนแทนได้ ตัวอย่างเช่น ผู้ใช้ bash shell บนระบบ Linux สามารถเพิ่มบรรทัดดังต่อไปนี้ใน ~/.bashrc
export TFHUB_CACHE_DIR=$HOME/.cache/tfhub_modules
...รีสตาร์ทเชลล์ จากนั้นตำแหน่งนี้จะถูกนำมาใช้ เมื่อใช้ตำแหน่งถาวร โปรดทราบว่าจะไม่มีการล้างข้อมูลอัตโนมัติ
อ่านจากที่จัดเก็บข้อมูลระยะไกล
ผู้ใช้สามารถสั่งให้ไลบรารี tensorflow_hub
อ่านโมเดลโดยตรงจากที่เก็บข้อมูลระยะไกล (GCS) แทนที่จะดาวน์โหลดโมเดลในเครื่องด้วย
os.environ["TFHUB_MODEL_LOAD_FORMAT"] = "UNCOMPRESSED"
หรือโดยการตั้งค่าสถานะบรรทัดคำสั่ง --tfhub_model_load_format
เป็น UNCOMPRESSED
ด้วยวิธีนี้ จึงไม่จำเป็นต้องมีไดเร็กทอรีแคช ซึ่งมีประโยชน์อย่างยิ่งในสภาพแวดล้อมที่ให้พื้นที่ดิสก์น้อยแต่มีการเชื่อมต่ออินเทอร์เน็ตที่รวดเร็ว
ทำงานบน TPU ในสมุดบันทึก Colab
ใน colab.research.google.com การดาวน์โหลดโมเดลที่บีบอัดจะขัดแย้งกับรันไทม์ TPU เนื่องจากภาระงานการคำนวณได้รับการมอบหมายให้กับเครื่องอื่นที่ไม่สามารถเข้าถึงตำแหน่งแคชตามค่าเริ่มต้น มีวิธีแก้ไขปัญหาสองประการสำหรับสถานการณ์นี้:
1) ใช้ที่เก็บข้อมูล GCS ที่ผู้ปฏิบัติงาน TPU เข้าถึงได้
วิธีแก้ปัญหาที่ง่ายที่สุดคือสั่งให้ไลบรารี tensorflow_hub
อ่านโมเดลจากที่ฝากข้อมูล GCS ของ TF Hub ตามที่อธิบายไว้ข้างต้น ผู้ใช้ที่มีที่เก็บข้อมูล 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)
หมายเหตุ: ดูข้อมูลเพิ่มเติมเกี่ยวกับแฮนเดิลที่ถูกต้องได้ ที่นี่