Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Opset17へのエクスポート、tiktokenへの置き換え、timestampルールの更新 #2

Open
wants to merge 10 commits into
base: onnx-export
Choose a base branch
from

Conversation

kyakuno
Copy link

@kyakuno kyakuno commented Jan 5, 2024

  • LayerNormを使用するためにopset17に変更
  • transformersのtokenizerの互換性がなくなっているので公式に合わせてtiktokenに置き換え
  • timestampルールを最新版に追随
  • ONNXの推論テスト用にimport_encoderとimport_decoderオプションを追加

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

largeをエクスポートするとweightが複数ファイルになってしまう。use_external_data_format指定が必要?

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

torch 2.2だと、use_external_data_formatがなくなっている。

def _export(
    model,
    args,
    f,
    export_params=True,
    verbose=False,
    training=_C_onnx.TrainingMode.EVAL,
    input_names=None,
    output_names=None,
    operator_export_type=_C_onnx.OperatorExportTypes.ONNX,
    export_type=None,
    opset_version=None,
    do_constant_folding=True,
    dynamic_axes=None,
    keep_initializers_as_inputs=None,
    fixed_batch_size=False,
    custom_opsets=None,
    add_node_names=True,
    onnx_shape_inference=True,
    export_modules_as_functions=False,
    autograd_inlining=True,
):

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

torchとonnxのバージョンごとの比較。

torch onnx 2GB超えファイルの出力
2.2 (dev) 1.14.0 複数ファイル
2.1.2 1.14.0 複数ファイル
2.0 1.14.0 複数ファイル
2.0 1.13.0 複数ファイル

下記と同じ問題みたい。ただし、下記のIssueは未解決。
pytorch/pytorch#94280

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

既存のlargeのモデルはlinuxのGPU環境でエクスポートしているので、macOSの問題な気がする。
macOSの場合、2GB超えのファイルを1ファイルにエクスポートできないのではないか。

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

Windowsで2.0.1+cu117 + onnx 1.13.1で試したが、Windowsでも分割されてしまう。

@kyakuno
Copy link
Author

kyakuno commented Jan 6, 2024

@ooe1123 largeモデルをエクスポートすると、下記のようにweightが複数に分割されてしまうようでして、既存のdecoder_large_v3_fix_kv_cache_weights.pbのように、1つのpbにまとめる方法をご存知でしょうか?

スクリーンショット 2024-01-06 22 01 05

@ooe1123
Copy link
Collaborator

ooe1123 commented Jan 7, 2024

私は、一旦分割して出力した後に、以下のようにして出力し直しています。

import onnx
net = onnx.load("path_to_model/xxx.onnx")
# collate external tensor files into one
onnx.save_model(
    net,
    "xxx.onnx",
    save_as_external_data=True,
    all_tensors_to_one_file=True,
    location="xxx_weights.pb",
    convert_attribute=False,
)

@kyakuno kyakuno changed the title Opset17へのエクスポート、tiktokenへの置き換え Opset17へのエクスポート、tiktokenへの置き換え、timestampルールの更新 Jan 9, 2024
@kyakuno
Copy link
Author

kyakuno commented Jan 9, 2024

@ooe1123 情報、ありがとうございます!onnxでマージしているのですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants