Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການປັບແຕ່ງໂມເດວ Deep Learning ສຳລັບອຸປະກອນມືຖືດ້ວຍ TFLite ຂັ້ນສູງ

ໂພສເມື່ອ # Deep Learning # TFLite # Model Optimization # Edge AI

ການປັບແຕ່ງໂມເດວ Deep Learning ສຳລັບອຸປະກອນມືຖືດ້ວຍ TFLite ຂັ້ນສູງ

ສະບາຍດີນັກພັດທະນາ ແລະ ວິສະວະກອນ AI ທຸກທ່ານ. ໃນຍຸກທີ່ຄວາມສາມາດຂອງ Deep Learning (DL) ກ້າວໄປຢ່າງກ້າວກະໂດດ, ພວກເຮົາສາມາດສ້າງໂມເດວທີ່ສະຫຼາດໄດ້ຫຼາຍຂຶ້ນ. ແຕ່ສິ່ງທ້າທາຍທີ່ໃຫຍ່ທີ່ສຸດສຳລັບນັກພັດທະນາໃນລາວ ບໍ່ແມ່ນການຝຶກສອນ (Training) ໂມເດວເທິງ Server ຫຼັກລ້ານ, ແຕ່ແມ່ນການນຳເອົາໂມເດວເຫຼົ່ານັ້ນມາແລ່ນເທິງ “ສະມາດໂຟນທົ່ວໄປ” ຂອງປະຊາຊົນໃຫ້ໄດ້ຢ່າງລ່ຽນໄຫຼ ແລະ ບໍ່ຕ້ອງເພິ່ງພາອິນເຕີເນັດຕະຫຼອດເວລາ (Edge AI).

ລອງນຶກພາບແອັບພລິເຄຊັນກວດຈັບພະຍາດພືດໃນສວນກາເຟທີ່ເມືອງປາກຊ່ອງ, ຊຶ່ງບາງພື້ນທີ່ອາດມີສັນຍານອິນເຕີເນັດທີ່ຈຳກັດ, ຫຼື ລະບົບກວດຈັບປ້າຍທະບຽນລົດແບບ Real-time ຕາມທ້ອງຖະໜົນໃນນະຄອນຫຼວງວຽງຈັນທີ່ລົດຕິດຂັດ. ການສົ່ງຮູບພາບເຂົ້າໄປປະມວນຜົນຢູ່ Cloud ຕະຫຼອດເວລາອາດເຮັດໃຫ້ເກີດຄວາມຊັກຊ້າ (Latency) ແລະ ສິ້ນເປືອງແບັດເຕີຣີ. ດັ່ງນັ້ນ, ທັກສະການເຮັດ Model Optimization ຈຶ່ງເປັນສິ່ງທີ່ວິສະວະກອນ AI ຂັ້ນສູງຂາດບໍ່ໄດ້.

ບັນຫາຄໍຂວດຂອງການປະມວນຜົນເທິງອຸປະກອນມືຖື (Mobile Bottlenecks)

ໂມເດວ Deep Learning ມາດຕະຖານເຊັ່ນ: ResNet50 ຫຼື VGG16 ມັກຈະໃຊ້ Parameters ຫຼາຍລ້ານຕົວ ແລະ ກິນພື້ນທີ່ໜ່ວຍຄວາມຈຳຫຼັກຮ້ອຍ Megabytes (MB). ນອກຈາກນີ້, ການຄຳນວນທາງຄະນິດສາດແບບ Floating-Point 32-bit (FP32) ຍັງຮຽກຮ້ອງພະລັງງານຈາກ CPU/GPU ສູງຫຼາຍ, ເຮັດໃຫ້ເກີດ 3 ບັນຫາຫຼັກກະທົບຕໍ່ຜູ້ໃຊ້:

  1. Memory Footprint: ແອັບມີຂະໜາດໃຫຍ່ເກີນໄປ, ດາວໂຫຼດຍາກ.
  2. Inference Latency: ປະມວນຜົນແລະຕອບສະໜອງຊ້າ (Low FPS).
  3. Power Consumption: ກິນແບັດເຕີຣີ ແລະ ເຮັດໃຫ້ສະມາດໂຟນຮ້ອນໄວ.

ສິລະປະແຫ່ງການຫຍໍ້ຂະໜາດ: Quantization

ສຳລັບນັກພັດທະນາຂັ້ນສູງ, ການຫຍໍ້ແຕ່ຂະໜາດ Architecture ອາດບໍ່ພຽງພໍ. ເຮົາຕ້ອງລົງເລິກເຖິງລະດັບ Precision ຂອງໂມເດວ ຜ່ານເຕັກນິກທີ່ເອີ້ນວ່າ Quantization.

Quantization ແມ່ນການແປງຄ່າ Weights ແລະ Activations ຂອງໂມເດວ ຈາກ FP32 ໃຫ້ກາຍເປັນຮູບແບບທີ່ນ້ອຍລົງ ເຊັ່ນ: Float16 (FP16) ຫຼື Integer 8-bit (INT8). ສົມຜົນພື້ນຖານຂອງການແປງຄ່າ (Affine Quantization) ແມ່ນ: r = S * (q - Z) ໂດຍທີ່:

ການເຮັດ INT8 Quantization ສາມາດຫຼຸດຂະໜາດຂອງໂມເດວລົງໄດ້ເຖິງ 4 ເທົ່າ ແລະ ເພີ່ມຄວາມໄວໃນການອະນຸມານ (Inference) ໄດ້ 2-4 ເທົ່າ ເທິງໜ່ວຍປະມວນຜົນ ARM ທີ່ໃຊ້ໃນສະມາດໂຟນທົ່ວໄປໃນບ້ານເຮົາ.

ການປະຕິບັດຕົວຈິງ: TFLite Post-Training Quantization

TensorFlow Lite (TFLite) ແມ່ນເຄື່ອງມືທີ່ດີທີ່ສຸດໃນທຸກມື້ນີ້ສຳລັບການນຳໂມເດວລົງມືຖື. ນີ້ແມ່ນຕົວຢ່າງໂຄດ Python ໃນການແປງໂມເດວ Keras ໃຫ້ກາຍເປັນ TFLite ແບບ Full Integer (INT8) ເຊິ່ງຮຽກຮ້ອງໃຫ້ຕ້ອງມີ Representative Dataset ເພື່ອຊ່ວຍໃຫ້ TFLite ຄຳນວນຄ່າ Scale ແລະ Zero-point ໄດ້ຢ່າງແມ່ນຍຳ ແລະ ປ້ອງກັນບໍ່ໃຫ້ຄວາມຖືກຕ້ອງ (Accuracy) ຂອງໂມເດວຕົກລົງຫຼາຍ.

import tensorflow as tf
import numpy as np

# 1. ໂຫຼດໂມເດວ Keras ທີ່ໄດ້ຜ່ານການ Train ມາແລ້ວ (ຕົວຢ່າງ: Model ກວດພະຍາດໃບກາເຟ ເຊິ່ງ Train ດ້ວຍ Dataset ຈາກພາກໃຕ້ຂອງລາວ)
model = tf.keras.models.load_model('coffee_disease_model.h5')

# 2. ສ້າງ TFLite Converter
converter = tf.lite.TFLiteConverter.from_keras_model(model)

# 3. ກຳນົດ Optimization Flag ສຳລັບ Quantization
converter.optimizations = [tf.lite.Optimize.DEFAULT]

# 4. ສ້າງ Representative Dataset generator
# ສົມມຸດວ່າ x_train ແມ່ນຮູບພາບໃບກາເຟທີ່ຖືກ Preprocess ແລ້ວ (Normalized FP32)
def representative_data_gen():
    for input_value in tf.data.Dataset.from_tensor_slices(x_train).batch(1).take(100):
        # ຮັບປະກັນວ່າ data type ເປັນ float32
        yield [tf.cast(input_value, tf.float32)]

converter.representative_dataset = representative_data_gen

# 5. ບັງຄັບໃຫ້ທຸກ Op ເປັນ INT8 ເພື່ອຮອງຮັບ Hardware Accelerator (ເຊັ່ນ Edge TPU ຫຼື Android NNAPI)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.int8  # Input ຮັບເປັນ INT8
converter.inference_output_type = tf.int8 # Output ອອກເປັນ INT8

# 6. ທຳການແປງໂມເດວ (Convert)
tflite_quant_model = converter.convert()

# 7. ບັນທຶກໂມເດວ
with open('coffee_disease_model_quantized.tflite', 'wb') as f:
    f.write(tflite_quant_model)
    
print("ແປງໂມເດວເປັນ TFLite ແບບ INT8 ສຳເລັດ!")

ຖາປັດຕະຍະກຳທີ່ເໝາະສົມສຳລັບ Edge Devices

ນອກຈາກການເຮັດ Quantization ແລ້ວ, ການເລືອກໃຊ້ Base Architecture ທີ່ອອກແບບມາເພື່ອມືຖືໂດຍສະເພາະກໍສຳຄັນບໍ່ແພ້ກັນ. ສຳລັບວຽກງານເຊັ່ນ ການວິເຄາະພາບຈະລາຈອນຢູ່ແຍກໄຟແດງນະຄອນຫຼວງວຽງຈັນ (ທີ່ຕ້ອງການຄວາມໄວລະດັບ 30 FPS+ ເພື່ອກວດຈັບປ້າຍທະບຽນ), ການໃຊ້ Standard CNN ອາດຊ້າເກີນໄປ. ແນະນຳໃຫ້ເລືອກໃຊ້:

Key Takeaways

ສະຫຼຸບ

ຄວາມສຳເລັດຂອງການພັດທະນາໂມເດວ AI ບໍ່ແມ່ນພຽງແຕ່ການໄດ້ຄ່າ Accuracy 99% ເທິງເຄື່ອງເຊີບເວີທີ່ມີ GPU ລາຄາແພງລະດັບສູງ, ແຕ່ແມ່ນການທີ່ເຮົາສາມາດນຳເອົາພະລັງຂອງ AI ນັ້ນ ຫຍໍ້ສ່ວນລົງມາໃຫ້ຢູ່ໃນມືຂອງຜູ້ຊົມໃຊ້ຕົວຈິງທົ່ວປະເທດລາວໄດ້ຢ່າງມີປະສິດທິຜົນ. ການເປັນຊ່ຽວຊານດ້ານ TFLite ປະສົມປະສານເທັກນິກ Model Optimization ຂັ້ນສູງ ຈະຍົກລະດັບໃຫ້ທ່ານກາຍເປັນວິສະວະກອນທີ່ສາມາດປ່ຽນທິດສະດີໃນຫ້ອງຮຽນ ໄປສູ່ແອັບພລິເຄຊັນທີ່ຊ່ວຍແກ້ໄຂບັນຫາຕົວຈິງ (Real-world local problems) ໃນສັງຄົມໄດ້ຢ່າງແທ້ຈິງ.