บทนำ
คู่มือนี้สาธิตวิธีที่ Tensorflow Extended (TFX) สามารถสร้างและประเมินโมเดลการเรียนรู้ของเครื่องที่จะปรับใช้บนอุปกรณ์ได้ ตอนนี้ TFX ให้การสนับสนุนดั้งเดิมสำหรับ TFLite ซึ่งทำให้สามารถอนุมานที่มีประสิทธิภาพสูงบนอุปกรณ์มือถือได้
คู่มือนี้จะแนะนำคุณเกี่ยวกับการเปลี่ยนแปลงที่สามารถทำได้กับไปป์ไลน์เพื่อสร้างและประเมินโมเดล TFLite เรามีตัวอย่างที่สมบูรณ์ ไว้ที่นี่ ซึ่งแสดงให้เห็นว่า TFX สามารถฝึกและประเมินแบบจำลอง TFLite ที่ได้รับการฝึกจากชุดข้อมูล MNIST ได้อย่างไร นอกจากนี้ เราแสดงให้เห็นว่าไปป์ไลน์เดียวกันสามารถนำมาใช้เพื่อส่งออกทั้ง SavedModel แบบ Keras แบบมาตรฐานและ TFLite ได้พร้อมกัน ซึ่งช่วยให้ผู้ใช้สามารถเปรียบเทียบคุณภาพของทั้งสองได้
เราคิดว่าคุณคุ้นเคยกับ TFX ส่วนประกอบของเรา และไปป์ไลน์ของเรา ถ้าไม่เช่นนั้น โปรดดูบทช่วย สอน นี้
ขั้นตอน
มีเพียงสองขั้นตอนเท่านั้นที่จำเป็นในการสร้างและประเมินแบบจำลอง TFLite ใน TFX ขั้นตอนแรกคือการเรียกใช้ตัวเขียนซ้ำ TFLite ภายในบริบทของ TFX Trainer เพื่อแปลงโมเดล TensorFlow ที่ได้รับการฝึกอบรมเป็น TFLite ขั้นตอนที่สองคือการกำหนดค่าตัวประเมินเพื่อประเมินโมเดล TFLite ตอนนี้เราคุยกันทีละเรื่อง
เรียกใช้ตัวเขียน TFLite ใหม่ภายใน Trainer
TFX Trainer คาดหวังให้ระบุ run_fn
ที่ผู้ใช้กำหนดในไฟล์โมดูล run_fn
นี้กำหนดโมเดลที่จะฝึก ฝึกโมเดลตามจำนวนที่ระบุ และเอ็กซ์พอร์ตโมเดลที่ฝึก
ในส่วนที่เหลือของส่วนนี้ เรามีข้อมูลโค้ดที่แสดงการเปลี่ยนแปลงที่จำเป็นในการเรียกใช้ตัวเขียนซ้ำ TFLite และส่งออกโมเดล TFLite รหัสทั้งหมดนี้อยู่ใน run_fn
ของ โมดูล MNIST TFLite
ดังที่แสดงในโค้ดด้านล่าง ขั้นแรกเราต้องสร้างลายเซ็นที่รับ Tensor
สำหรับทุกฟีเจอร์เป็นอินพุต โปรดทราบว่านี่เป็นการออกจากโมเดลที่มีอยู่ส่วนใหญ่ใน TFX ซึ่งใช้ tf.Example protos ที่เป็นอนุกรมเป็นอินพุต
signatures = {
'serving_default':
_get_serve_tf_examples_fn(
model, tf_transform_output).get_concrete_function(
tf.TensorSpec(
shape=[None, 784],
dtype=tf.float32,
name='image_floats'))
}
จากนั้นโมเดล Keras จะถูกบันทึกเป็น SavedModel ในลักษณะเดียวกับที่ปกติเป็น
temp_saving_model_dir = os.path.join(fn_args.serving_model_dir, 'temp')
model.save(temp_saving_model_dir, save_format='tf', signatures=signatures)
สุดท้าย เราสร้างอินสแตนซ์ของตัวเขียนซ้ำ TFLite ( tfrw
) และเรียกใช้บน SavedModel เพื่อรับโมเดล TFLite เราจัดเก็บโมเดล TFLite นี้ใน serving_model_dir
ที่จัดเตรียมโดยผู้เรียก run_fn
ด้วยวิธีนี้ โมเดล TFLite จะถูกเก็บไว้ในตำแหน่งที่คอมโพเนนต์ TFX ดาวน์สตรีมทั้งหมดคาดว่าจะพบโมเดล
tfrw = rewriter_factory.create_rewriter(
rewriter_factory.TFLITE_REWRITER, name='tflite_rewriter')
converters.rewrite_saved_model(temp_saving_model_dir,
fn_args.serving_model_dir,
tfrw,
rewriter.ModelType.TFLITE_MODEL)
การประเมินโมเดล TFLite
TFX Evaluator ให้ความสามารถในการวิเคราะห์แบบจำลองที่ได้รับการฝึกอบรมเพื่อทำความเข้าใจคุณภาพในตัวชี้วัดที่หลากหลาย นอกจากการวิเคราะห์ SavedModels แล้ว TFX Evaluator ยังสามารถวิเคราะห์โมเดล TFLite ได้อีกด้วย
ข้อมูลโค้ดต่อไปนี้ (ทำซ้ำจาก ไปป์ไลน์ MNIST ) แสดงวิธีกำหนดค่าตัวประเมินที่วิเคราะห์โมเดล TFLite
# Informs the evaluator that the model is a TFLite model.
eval_config_lite.model_specs[0].model_type = 'tf_lite'
...
# Uses TFMA to compute the evaluation statistics over features of a TFLite
# model.
model_analyzer_lite = Evaluator(
examples=example_gen.outputs['examples'],
model=trainer_lite.outputs['model'],
eval_config=eval_config_lite,
).with_id('mnist_lite')
ดังที่แสดงไว้ด้านบน การเปลี่ยนแปลงเพียงอย่างเดียวที่เราต้องทำคือตั้งค่าฟิลด์ model_type
เป็น tf_lite
ไม่จำเป็นต้องเปลี่ยนแปลงการกำหนดค่าอื่นๆ เพื่อวิเคราะห์แบบจำลอง TFLite ไม่ว่าโมเดล TFLite หรือ SavedModel จะถูกวิเคราะห์หรือไม่ก็ตาม ผลลัพธ์ของ Evaluator
จะมีโครงสร้างเหมือนกันทุกประการ
อย่างไรก็ตาม โปรดทราบว่าผู้ประเมินจะถือว่าโมเดล TFLite ถูกบันทึกในไฟล์ชื่อ tflite
ภายใน trainer_lite.outputs['model']