ดาวน์โหลดโมเดลแคชจาก TF Hub

ภาพรวม

ปัจจุบันไลบรารี 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)