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

[ONNX] Deprecated the example_outputs param from torch.onnx.export() function. #62815

Merged
merged 5 commits into from Aug 29, 2021

Conversation

hwangdeyu
Copy link
Collaborator

@hwangdeyu hwangdeyu commented Aug 5, 2021

example_outputs used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

Since we can work out example_outputs in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

@facebook-github-bot
Copy link
Contributor

facebook-github-bot commented Aug 5, 2021

🔗 Helpful links

💊 CI failures summary and remediations

As of commit 03947af (more details on the Dr. CI page):


  • 6/6 failures possibly* introduced in this PR
    • 1/6 non-scanned failure(s)

🕵️ 3 new failures recognized by patterns

The following CI failures do not appear to be due to upstream breakages:

See CircleCI build pytorch_xla_linux_bionic_py3_6_clang9_test (1/3)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

Aug 29 07:22:03 [ FAILED ] TensorTest.TestBatchNorm1D
Aug 29 07:22:03 [ RUN      ] XlaUtilCacheTest.BasicTest
Aug 29 07:22:03 [       OK ] XlaUtilCacheTest.BasicTest (1 ms)
Aug 29 07:22:03 [----------] 1 test from XlaUtilCacheTest (1 ms total)
Aug 29 07:22:03 
Aug 29 07:22:03 [----------] Global test environment tear-down
Aug 29 07:22:03 [==========] 613 tests from 8 test suites ran. (477476 ms total)
Aug 29 07:22:03 [  PASSED  ] 611 tests.
Aug 29 07:22:03 [  SKIPPED ] 1 test, listed below:
Aug 29 07:22:03 [  SKIPPED ] AtenXlaTensorTest.TestGroupNormBackward
Aug 29 07:22:03 [  FAILED  ] 1 test, listed below:
Aug 29 07:22:03 [  FAILED  ] TensorTest.TestBatchNorm1D
Aug 29 07:22:03 
Aug 29 07:22:03  1 FAILED TEST
Aug 29 07:22:03 + cleanup
Aug 29 07:22:03 + retcode=1
Aug 29 07:22:03 + set +x
Aug 29 07:22:03 =================== sccache compilation log ===================
Aug 29 07:22:03 =========== If your build fails, please take a look at the log above for possible reasons ===========
Aug 29 07:22:03 Compile requests                      0
Aug 29 07:22:03 Compile requests executed             0
Aug 29 07:22:03 Cache hits                            0

See CircleCI build pytorch_linux_xenial_cuda11_1_cudnn8_py3_gcc7_build (2/3)

Step: "Build" (full log | diagnosis details | 🔁 rerun)

Aug 29 08:23:41 ERROR 2021-08-29T03:43:10Z: scc...eof ((socklen_t)))\n ^\n" }
Aug 29 08:23:41 ERROR 2021-08-29T03:43:02Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c: In function \'main\':\nconftest.c:332:2: error: \'struct sockaddr\' has no member named \'sa_len\'\n x.sa_len = 0;\n  ^\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 ERROR 2021-08-29T03:43:06Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c: In function \'main\':\nconftest.c:366:10: error: \'RTLD_MEMBER\' undeclared (first use in this function); did you mean \'RTLD_NEXT\'?\n   (void) RTLD_MEMBER;\n          ^~~~~~~~~~~\n          RTLD_NEXT\nconftest.c:366:10: note: each undeclared identifier is reported only once for each function it appears in\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 ERROR 2021-08-29T03:43:06Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c:361:9: error: unknown type name \'not\'\n         not a universal capable compiler\n         ^~~\nconftest.c:361:15: error: expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'universal\'\n         not a universal capable compiler\n               ^~~~~~~~~\nconftest.c:361:15: error: unknown type name \'universal\'\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 ERROR 2021-08-29T03:43:06Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c: In function \'main\':\nconftest.c:367:4: error: unknown type name \'not\'; did you mean \'ino_t\'?\n    not big endian\n    ^~~\n    ino_t\nconftest.c:367:12: error: expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'endian\'\n    not big endian\n            ^~~~~~\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 ERROR 2021-08-29T03:43:08Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c: In function \'main\':\nconftest.c:378:4: error: \'struct stat\' has no member named \'st_mtimespec\'; did you mean \'st_mtim\'?\n st.st_mtimespec.tv_nsec = 1;\n    ^~~~~~~~~~~~\n    st_mtim\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 ERROR 2021-08-29T03:43:10Z: sccache::server: Compilation failed: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "conftest.c: In function \'main\':\nconftest.c:402:24: error: expected expression before \')\' token\n if (sizeof ((socklen_t)))\n                        ^\n" }
Aug 29 08:23:41 
Aug 29 08:23:41 =========== If your build fails, please take a look at the log above for possible reasons ===========
Aug 29 08:23:41 Compile requests                   14066
Aug 29 08:23:41 Compile requests executed           8079
Aug 29 08:23:41 Cache hits                          6645
Aug 29 08:23:41 Cache hits (C/C++)                  6340
Aug 29 08:23:41 Cache hits (CUDA)                    305
Aug 29 08:23:41 Cache misses                        1362
Aug 29 08:23:41 Cache misses (C/C++)                1019
Aug 29 08:23:41 Cache misses (CUDA)                  343

See CircleCI build pytorch_linux_backward_compatibility_check_test (3/3)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

Aug 29 04:46:14 The PR is introducing backward ...m to confirm whether this change is wanted or not.
Aug 29 04:46:14 processing existing schema:  alltoall_base(__torch__.torch.classes.dist_c10d.ProcessGroup _0, Tensor _1, Tensor _2, int[] _3, int[] _4) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  alltoall(__torch__.torch.classes.dist_c10d.ProcessGroup _0, Tensor[] _1, Tensor[] _2) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  send(__torch__.torch.classes.dist_c10d.ProcessGroup _0, Tensor[] _1, int _2, int _3) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  recv(__torch__.torch.classes.dist_c10d.ProcessGroup _0, Tensor[] _1, int _2, int _3) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  recv_anysource(__torch__.torch.classes.dist_c10d.ProcessGroup _0, Tensor[] _1, int _2) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  barrier(__torch__.torch.classes.dist_c10d.ProcessGroup _0) -> (__torch__.torch.classes.dist_c10d.Work _0)
Aug 29 04:46:14 processing existing schema:  __init__(__torch__.torch.classes.dist_c10d.frontend _0) -> (NoneType _0)
Aug 29 04:46:14 processing existing schema:  new_process_group_helper(__torch__.torch.classes.dist_c10d.frontend _0, int _1, int _2, int[] _3, str _4, __torch__.torch.classes.dist_c10d.Store _5, str? _6, int _7) -> (__torch__.torch.classes.dist_c10d.ProcessGroup _0)
Aug 29 04:46:14 processing existing schema:  get_process_group_by_name(__torch__.torch.classes.dist_c10d.frontend _0, str _1) -> (__torch__.torch.classes.dist_c10d.ProcessGroup _0)
Aug 29 04:46:14 processing existing schema:  get_name_of_process_group(__torch__.torch.classes.dist_c10d.frontend _0, __torch__.torch.classes.dist_c10d.ProcessGroup _1) -> (str _0)
Aug 29 04:46:14 The PR is introducing backward incompatible changes to the operator library. Please contact PyTorch team to confirm whether this change is wanted or not. 
Aug 29 04:46:14 
Aug 29 04:46:14 Broken ops: [
Aug 29 04:46:14 	quantized::embedding_bag_2bit_rowwise_offsets(Tensor weight, Tensor indices, Tensor? offsets=None, bool scale_grad_by_freq=False, int mode=0, bool pruned_weights=False, Tensor? per_sample_weights=None, Tensor? compressed_indices_mapping=None, bool include_last_offset=False) -> (Tensor)
Aug 29 04:46:14 	prim::VarStack(...) -> (Tensor)
Aug 29 04:46:14 	quantized::linear_relu_dynamic_fp16(Tensor X, __torch__.torch.classes.quantized.LinearPackedParamsBase W_prepack) -> (Tensor Y)
Aug 29 04:46:14 	q::_Bfloat16QuantizedToFloat(Tensor input) -> (Tensor)
Aug 29 04:46:14 	q::_FloatToBfloat16Quantized(Tensor input) -> (Tensor)
Aug 29 04:46:14 ]
Aug 29 04:46:14 =================== sccache compilation log ===================
Aug 29 04:46:14 =========== If your build fails, please take a look at the log above for possible reasons ===========

2 failures not recognized by patterns:

Job Step Action
CircleCI pytorch_linux_xenial_py3_6_gcc5_4_jit_legacy_test Report results 🔁 rerun
CircleCI pytorch_linux_xenial_py3_6_gcc5_4_test Report results 🔁 rerun

1 job timed out:

  • pytorch_linux_xenial_cuda11_1_cudnn8_py3_gcc7_build

ci.pytorch.org: 1 failed


This comment was automatically generated by Dr. CI (expand for details).Follow this link to opt-out of these comments for your Pull Requests.

Please report bugs/suggestions to the (internal) Dr. CI Users group.

Click here to manually regenerate this comment.

@hwangdeyu hwangdeyu force-pushed the deyu/remove_example_outputs branch 2 times, most recently from 76ff356 to d92a053 Compare August 12, 2021 06:51
@hwangdeyu hwangdeyu changed the title Deprecated the example_outputs param from torch.onnx.export() function. [ONNX] Deprecated the example_outputs param from torch.onnx.export() function. Aug 12, 2021
@hwangdeyu hwangdeyu force-pushed the deyu/remove_example_outputs branch 2 times, most recently from ba6dca2 to 6684670 Compare August 12, 2021 07:19
torch/onnx/__init__.py Outdated Show resolved Hide resolved
torch/onnx/utils.py Outdated Show resolved Hide resolved
torch/onnx/utils.py Outdated Show resolved Hide resolved
@jiafatom jiafatom self-assigned this Aug 12, 2021
torch/onnx/utils.py Outdated Show resolved Hide resolved
torch/onnx/utils.py Outdated Show resolved Hide resolved
torch/onnx/utils.py Outdated Show resolved Hide resolved
torch/onnx/__init__.py Outdated Show resolved Hide resolved
torch/onnx/__init__.py Outdated Show resolved Hide resolved
test/onnx/test_utility_funs.py Outdated Show resolved Hide resolved
torch/onnx/utils.py Outdated Show resolved Hide resolved
Copy link
Contributor

@jiafatom jiafatom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! For the test issue, please sync with @neginraoof . Thank you!

@BowenBao BowenBao force-pushed the onnx_ms_1 branch 2 times, most recently from 7c7074e to c500fb6 Compare August 20, 2021 20:46
@hwangdeyu hwangdeyu force-pushed the deyu/remove_example_outputs branch 3 times, most recently from 60c1fe1 to b7c3d09 Compare August 24, 2021 07:28
@hwangdeyu hwangdeyu force-pushed the deyu/remove_example_outputs branch 2 times, most recently from 9a24f60 to 23f5b4f Compare August 26, 2021 03:57
BowenBao added a commit that referenced this pull request Sep 1, 2021
…x.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 1, 2021
…x.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 7, 2021
…m from torch.onnx.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 7, 2021
…x.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

[ghstack-poisoned]
garymm added a commit that referenced this pull request Sep 18, 2021
…function. (#62815)

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

[ghstack-poisoned]
if example_outputs is None:
example_outputs = _get_example_outputs(model, args)
elif isinstance(example_outputs, list):
# example_outpus specified
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hwangdeyu This branch does not replicate the old behavior, due to missing calling the above snippet

    if isinstance(example_outputs, (torch.Tensor, int, float, bool)):
        example_outputs = (example_outputs,)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will try to edit the PR that submits to master, and tag you for review.

Copy link
Collaborator Author

@hwangdeyu hwangdeyu Sep 22, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will try to edit the PR that submits to master, and tag you for review.

Sure, that's a necessary modification. I only added this behavior when example_outputs, but it's needed whatever this example_outputs was. Thanks!

BowenBao added a commit that referenced this pull request Sep 20, 2021
…m from torch.onnx.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

Differential Revision: [D30905266](https://our.internmc.facebook.com/intern/diff/D30905266)

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 20, 2021
…x.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

Differential Revision: [D30905266](https://our.internmc.facebook.com/intern/diff/D30905266)

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 22, 2021
…m from torch.onnx.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

Differential Revision: [D30905266](https://our.internmc.facebook.com/intern/diff/D30905266)

[ghstack-poisoned]
BowenBao added a commit that referenced this pull request Sep 22, 2021
…x.export() function. (#62815)"

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Co-authored-by: hwangdeyu <dejack953@outlook.com>

Differential Revision: [D30905266](https://our.internmc.facebook.com/intern/diff/D30905266)

[ghstack-poisoned]
facebook-github-bot pushed a commit that referenced this pull request Sep 24, 2021
…function. (#62815) (#64380)

Summary:
Pull Request resolved: #64380

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905266

Pulled By: malfet

fbshipit-source-id: d00b00d7d02b365d165028288ad915678caa51f2

Co-authored-by: hwangdeyu <dejack953@outlook.com>
garymm pushed a commit to garymm/pytorch that referenced this pull request Oct 1, 2021
…function. (pytorch#62815) (pytorch#64380)

Summary:
Pull Request resolved: pytorch#64380

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905266

Pulled By: malfet

fbshipit-source-id: d00b00d7d02b365d165028288ad915678caa51f2

Co-authored-by: hwangdeyu <dejack953@outlook.com>
malfet pushed a commit that referenced this pull request Oct 8, 2021
* [ONNX] Remove argument _retain_param_name from torch.onnx.export() function. (#61702) (#64370)

Summary:
Pull Request resolved: #64370

As of now, the "_retain_param_name" parameter has no description in PyTorch docs website. According to code, this argument determines if we keep the original parameter names of PyTorch model in the final ONNX graph. If this is False, those original parameter names will be replaced with a series of integers starting from 1.

Since setting numbers as parameter names make no sense to users, we remove this argument from the torch.onnx.export() function to increase user experience of calling this function.

This PR will still keep it in torch.onnx.export() function for backward support while all backend logic has been changed to work as _retain_param_name is set to True.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905270

Pulled By: malfet

fbshipit-source-id: ca60757ca17daaff937e9f08da42596086795f4a

Co-authored-by: fatcat-z <zhang-ji@outlook.com>

* [ONNX] Remove strip_doc_string param from torch.onnx.export() function. (#61712) (#64371)

Summary:
Pull Request resolved: #64371

As of now, the "strip_doc_string" parameter was described as below:

strip_doc_string (bool, default True): do not include the field
doc_string``` from the exported model. Otherwise the field will mention the source code locations for model``.

This is usually useless to users who want to transform a PyTorch model to ONNX one. Only when the user wants to debug the export process, these source code locations could provide benefits.

To make the export() function more friendly by providing less parameters, we combined "strip_doc_string" into "verbose" parameter. If a user set verbose to True, it means the users need some log information for debugging the export process and this is similar with the purpose of strip_doc_string parameter.

But the usage of these 2 arguments are opposite: setting verbose to True means we want to print log information to help debug, which means strip_doc_string should be False. And this is how we replace strip_doc_string with verbose argument in this PR.

This PR will still keep it in torch.onnx.export() function for backward support while the usage of it has been combined with verbose argument.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905268

Pulled By: malfet

fbshipit-source-id: 2f06eb805c01fe15ff7a1b4f6595c937ba716d60

Co-authored-by: fatcat-z <zhang-ji@outlook.com>

* [ONNX] minor doc improvements and cleanup (#62514) (#64373)

Summary:
Pull Request resolved: #64373

* Fix some bad formatting and clarify things in onnx.rst.
* In `export_to_pretty_string`:
    * Add documentation for previously undocumented args.
    * Document that `f` arg is ignored and mark it deprecated.
    * Update tests to stop setting `f`.
    * Warn if `_retain_param_name` is set.
* Use double quotes for string literals in test_operators.py.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905271

Pulled By: malfet

fbshipit-source-id: 3627eeabf40b9516c4a83cfab424ce537b36e4b3

* [ONNX] Deprecated the example_outputs param from torch.onnx.export() function. (#62815) (#64380)

Summary:
Pull Request resolved: #64380

* `example_outputs` used to determine the type and shape of the outputs without tracing the execution of the model. And it must be provided when exporting a ScriptModule or ScriptFunction when using export() function.

* Since we can work out `example_outputs` in internal function instead of being provided by user, so we deprecated this argument in the export() function to increase user experience of calling this function.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905266

Pulled By: malfet

fbshipit-source-id: d00b00d7d02b365d165028288ad915678caa51f2

Co-authored-by: hwangdeyu <dejack953@outlook.com>

* [ONNX] Deprecate use_external_data_format param from torch.onnx.export() function. (#62257) (#64382)

Summary:
Pull Request resolved: #64382

* This `use_external_data_format` parameter is used for large models cannot be exported because of the 2GB protobuf limit.

* When `use_external_data_format` set to True, the model is exported in ONNX external data format, in which case some of the model parameters are stored in external binary files and not in the ONNX model file itself.

* This PR will set this paramter to DEPRECATED and check the model proto sizes by code instead of by user, if the sizes lager than 2GB, then `use_external_data_format = True` automatically.

Test Plan: Imported from OSS

Reviewed By: ezyang

Differential Revision: D30905265

Pulled By: malfet

fbshipit-source-id: 82b4e17bfa6a8de2bfd700a5282c12f6835603cb

Co-authored-by: hwangdeyu <dejack953@outlook.com>

* fix clang-tidy error introduced by #64382 (#65977)

Summary: Pull Request resolved: #65977

Reviewed By: ngimel

Differential Revision: D31423174

Pulled By: malfet

fbshipit-source-id: 0ea560b9a6ddd6431f70bd3ac10ace68e26ab352

Co-authored-by: BowenBao <bowbao@microsoft.com>
Co-authored-by: fatcat-z <zhang-ji@outlook.com>
Co-authored-by: hwangdeyu <dejack953@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants