เข้าร่วมชุมชน SIG TFX-Addons และช่วยปรับปรุง TFX ให้ดียิ่งขึ้น!
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

TFX สำหรับมือถือ

บทนำ

คู่มือนี้แสดงให้เห็นว่า Tensorflow Extended (TFX) สามารถสร้างและประเมินโมเดลการเรียนรู้ของเครื่องที่จะปรับใช้บนอุปกรณ์ได้อย่างไร ขณะนี้ TFX ให้การสนับสนุนแบบเนทีฟสำหรับ TFLite ซึ่งทำให้สามารถทำการอนุมานที่มีประสิทธิภาพสูงบนอุปกรณ์มือถือได้

คู่มือนี้จะอธิบายถึงการเปลี่ยนแปลงที่สามารถทำได้กับไปป์ไลน์ใด ๆ เพื่อสร้างและประเมินโมเดล TFLite เรามีตัวอย่างทั้งหมด ที่นี่ ซึ่งแสดงให้เห็นว่า TFX สามารถฝึกอบรมและประเมินโมเดล TFLite ที่ได้รับการฝึกอบรมจากชุดข้อมูล MNIST ได้อย่างไร นอกจากนี้เราแสดงให้เห็นว่าท่อเดียวกันสามารถใช้ในการส่งออกทั้ง simulataneously มาตรฐาน Keras ตาม SavedModel เช่นเดียวกับ TFLite หนึ่งที่ช่วยให้ผู้ใช้สามารถเปรียบเทียบคุณภาพของทั้งสอง

เราถือว่าคุณคุ้นเคยกับ TFX ส่วนประกอบของเราและท่อของเรา ถ้าไม่เช่นนั้นโปรดดู บทแนะนำ นี้

ขั้นตอน

ต้องใช้เพียงสองขั้นตอนในการสร้างและประเมินโมเดล TFLite ใน TFX ขั้นตอนแรกคือการเรียกใช้ TFLite rewriter ภายในบริบทของ TFX Trainer เพื่อแปลงโมเดล TensorFlow ที่ได้รับการฝึกฝนมาเป็น TFLite ขั้นตอนที่สองคือการกำหนดค่า Evaluator เพื่อประเมินแบบจำลอง TFLite ตอนนี้เราจะหารือกัน

เรียกใช้ตัวเขียนใหม่ TFLite ภายในเทรนเนอร์

TFX Trainer คาดว่าจะมีการระบุ run_fn ผู้ใช้กำหนดไว้ในไฟล์โมดูล run_fn นี้กำหนดโมเดลที่จะฝึกฝนฝึกโมเดลสำหรับจำนวนการทำซ้ำที่ระบุและส่งออกโมเดลที่ฝึกแล้ว

ในส่วนที่เหลือของส่วนนี้เรามีข้อมูลโค้ดซึ่งแสดงการเปลี่ยนแปลงที่จำเป็นในการเรียกใช้ TFLite rewriter และส่งออกโมเดล TFLite รหัสทั้งหมดนี้อยู่ใน run_fn ของ โมดูล MNIST TFLite

ดังที่แสดงในโค้ดด้านล่างก่อนอื่นเราต้องสร้างลายเซ็นที่ใช้ Tensor สำหรับทุกคุณสมบัติเป็นอินพุต โปรดทราบว่านี่เป็นการออกจากโมเดลที่มีอยู่ส่วนใหญ่ใน TFX ซึ่งใช้ tf แบบ อนุกรม ตัวอย่าง โปรโตสเป็นอินพุต

 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 rewriter ( 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,
      instance_name='mnist_lite')

ตามที่ปรากฏข้างต้นเปลี่ยนแปลงเพียงอย่างเดียวที่เราต้องทำคือการตั้งค่า model_type ฟิลด์ tf_lite ไม่จำเป็นต้องมีการเปลี่ยนแปลงการกำหนดค่าอื่น ๆ เพื่อวิเคราะห์โมเดล TFLite ไม่ว่าจะวิเคราะห์โมเดล TFLite หรือโมเดลที่บันทึกไว้ผลลัพธ์ของ Evaluator จะมีโครงสร้างเหมือนกันทุกประการ