ภาพรวม
ปัจจุบันไลบรารี tensorflow_hub
รองรับสองโหมดสำหรับการดาวน์โหลดโมเดล โดยค่าเริ่มต้น โมเดลจะถูกดาวน์โหลดเป็นไฟล์บีบอัดและแคชบนดิสก์ ประการที่สอง สามารถอ่านแบบจำลองได้โดยตรงจากที่จัดเก็บข้อมูลระยะไกลไปยัง TensorFlow ไม่ว่าจะด้วยวิธีใด การเรียกใช้ฟังก์ชัน tensorflow_hub
ในโค้ด Python จริงสามารถและควรใช้ 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 ของตนเองสามารถระบุไดเรกทอรีในที่เก็บข้อมูลเป็นตำแหน่งแคชด้วยรหัส like
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)