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

ภาพรวม

ขณะนี้ไลบรารี 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)

หมายเหตุ: ดูข้อมูลเพิ่มเติมเกี่ยวกับหมายเลขอ้างอิงที่ถูกต้องได้ ที่นี่