TensorFlow模型優化工具:float16量化,模型輕輕鬆鬆減少一半

2019-11-14     AI公園

作者:TensorFlow

編譯:ronghuaiyang

導讀

一個Tensorflow訓練後量化的工具,不用再單獨訓練一個低精度模型了,原來的全精度模型直接就可以轉換。

我們非常激動地添加訓練後float16量化作為模型優化工具包的一部分。這是一套工具,包括:混合量化,全整數量化和剪枝。

訓練後的float16量化減少了TensorFlow Lite模型的尺寸(高達50%),同時犧牲了很少的精度。它量化模型常量(如權重和偏差值)從全精度浮點數(32位)到降低精度浮點數數據類型(IEEE FP16)。

訓練後的float16量化是量化TensorFlow Lite模型的一個很好的起點,因為它對精度的影響很小,而且模型大小顯著減小。你可以查看我們的文檔:https://www.tensorflow.org/lite/performance/posttrainingquantization (包括一個新的浮點圖!),以幫助您了解不同的量化選項和場景。

降低精度的好處

降低精度有很多好處,特別是當部署到邊緣設備時:

減少2倍的模型大小。模型中的所有常量值都存儲在16位浮點數中,而不是32位浮點數。由於這些常量值通常控制整個模型大小,因此通常會將模型大小減少大約一半。

可忽略的精度損失。深度學習模型通常能夠在使用比最初訓練時更少的精度的情況下產生良好的推理結果。在我們對幾個模型的實驗中,我們發現推理質量幾乎沒有損失。例如,下面我們展示了MobileNet V2的Top 1精度降低了<0.03%。(見下面的結果)。

尺寸減少了2倍,微乎其微的精度損失

訓練後float16量化對深度學習模型的精度影響最小,並可使模型的尺寸縮小約2倍。例如,以下是MobileNet V1和V2模型以及MobileNet SSD模型的一些結果。MobileNet v1和v2的精度結果基於ImageNet圖像識別任務。SSD模型是在COCO物體檢測任務上評估的。

模型準確率

在[ILSVRC 2012圖像分類任務上評估標準Mobilenet float32模型及其fp16變體,COCO物體檢測任務上評估Mobilenet SSD float32模型及其fp16變體。

如何使用訓練後float16量化

你可以在TensorFlow Lite轉換器上指定訓練後的float16量化,方法是使用你訓練後的float32模型,將優化設置為默認,目標規範支持的類型設置為float16常量:

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.lite.constants.FLOAT16]
Tflite_quanit_model = converter.convert()

一旦轉換了模型,就可以像其他TensorFlow Lite模型一樣直接運行它。默認情況下,模型將在CPU上運行,將16位參數「上採樣」到32位,然後執行標準的32位浮點運算。隨著時間的推移,我們希望看到更多的硬體支持來加速fp16的計算,從而允許我們將upsample降低到float32,並直接計算這些半精度值。

你也可以在GPU上運行你的模型。我們增強了TensorFlow Lite GPU委託來接受降低的精度參數並直接運行它們(而不是像在CPU上那樣轉換為float32)。在你的應用中,你可以通過 TfLiteGpuDelegateCreate函數創建GPU委託。當為委託指定選項時,請確保將 precision_loss_allowed設置為1,以便在GPU上使用浮點16操作:

//Prepare GPU delegate.
const TfLiteGpuDelegateOptions options = {
.metadata = NULL,
.compile_options = {
.precision_loss_allowed = 1, // FP16
.preferred_gl_object_type = TFLITE_GL_OBJECT_TYPE_FASTEST,
.dynamic_batch_enabled = 0, // Not fully functional yet
},
};

英文原文:https://medium.com/tensorflow/tensorflow-model-optimization-toolkit-float16-quantization-halves-model-size-cc113c75a2fa

請長按或掃描二維碼關注本公眾號

文章來源: https://twgreatdaily.com/AqdNbG4BMH2_cNUgwqhJ.html