ภาพรวม
ไลบรารี tensorflow_hub ในปัจจุบันรองรับโหมดการดาวน์โหลดโมเดลสองโหมด โดยค่าเริ่มต้น โมเดลจะถูกดาวน์โหลดเป็นไฟล์บีบอัดและแคชไว้ในดิสก์ ประการที่สอง โมเดลสามารถอ่านโดยตรงจากที่เก็บข้อมูลระยะไกลไปยัง TensorFlow ได้ ไม่ว่าจะด้วยวิธีใด การเรียกใช้ฟังก์ชัน tensorflow_hub ในโค้ด Python จริงๆ สามารถและควรใช้ URL tfhub.dev มาตรฐานของโมเดลต่อไป ซึ่งสามารถใช้งานได้บนระบบต่างๆ และง่ายต่อการค้นหาเอกสาร ในกรณีที่โค้ดของผู้ใช้ต้องการตำแหน่งไฟล์จริง (หลังจากดาวน์โหลดและคลายไฟล์ หรือหลังจากแปลงแฮนเดิลของโมเดลเป็นพาธไฟล์) สามารถรับได้โดยใช้ฟังก์ชัน 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 บนระบบ 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 bucket ที่ TPU worker สามารถเข้าถึงได้
วิธีแก้ปัญหาที่ง่ายที่สุดคือการสั่งให้ไลบรารี tensorflow_hub อ่านโมเดลจาก GCS bucket ของ TF Hub ตามที่อธิบายไว้ข้างต้น ผู้ใช้ที่มี GCS bucket ของตนเองสามารถระบุไดเร็กทอรีใน bucket ของตนเองเป็นตำแหน่งแคชได้โดยใช้โค้ดดังนี้:
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)
หมายเหตุ: ดูข้อมูลเพิ่มเติมเกี่ยวกับแฮนด์เดิลที่ถูกต้องได้ ที่นี่