1

自分のテキストを使用して ditilgpt2 モデルを微調整しました。run_language_modeling.pyトレーニングとrun_generation.pyスクリプトが期待される結果を生成した後、正常に動作します。

これを Tensorflow Lite モデルに変換したいので、次を使用してそれを行いました

from transformers import *

CHECKPOINT_PATH = '/content/drive/My Drive/gpt2_finetuned_models/checkpoint-2500'

model = GPT2LMHeadModel.from_pretrained("distilgpt2")
model.save_pretrained(CHECKPOINT_PATH)
model = TFGPT2LMHeadModel.from_pretrained(CHECKPOINT_PATH, from_pt=True) 

しかし、私が書くとき、変換後のようにこれを正しくやっているとは思いません

print(model.inputs)
print(model.outputs)

私は得る

None
None

しかし、私はまだ次を使用してTFLite変換を進めました:

import tensorflow as tf

input_spec = tf.TensorSpec([1, 64], tf.int32)
model._set_inputs(input_spec, training=False)

converter = tf.lite.TFLiteConverter.from_keras_model(model)

# FP16 quantization:
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.float16]

tflite_model = converter.convert()

open("/content/gpt2-fp16.tflite", "wb").write(tflite_model)

しかし、動作せず、生成されたtfliteモデルを使用するとエラーが発生します:

テンソルフロー/ライト/カーネル/kernel_util.cc:249 d1 == d2 || d1 == 1 || d2 == 1 は真ではありませんでした。

これは、モデルが適切に変換されずNone、入力/出力が得られないことに関係していると確信しています。

誰でもこれを修正する方法を知っていますか?

ありがとう

4

0 に答える 0