Header bug fix#1079
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/ao/1079
Note: Links to docs will display an error until the docs builds have been completed. ✅ No FailuresAs of commit 610f80d with merge base 48bc81c ( This comment was automatically generated by Dr. CI and updates every 15 minutes. |
|
This pull request was exported from Phabricator. Differential Revision: D64370707 |
Summary: A last minute change created a compile error on the header. This fixes the issue. I also make the header 64 bytes and add a magic number at the start to make it safer in future. Differential Revision: D64370707
c8a2749 to
abb7810
Compare
|
This pull request was exported from Phabricator. Differential Revision: D64370707 |
|
I'm unsure what it fixes to be frank, perhaps better PR description would help clarify what it is trying to fix... |
| TORCHAO_CHECK( | ||
| version >= 0 && version < 256, "version must be between 0 and 255"); |
There was a problem hiding this comment.
What is wrong with this check?
There was a problem hiding this comment.
Before it existed to make sure version could be packed into a char (since both version/weight_nbit were packed into an unsigned short). But the header now has more space, and version is now an int, so this bound check is no longer needed.
| namespace torchao::ops { | ||
|
|
||
| enum PackedWeightsFormat : unsigned short { | ||
| enum PackedWeightsFormat : int { |
There was a problem hiding this comment.
Why this must be a signed type? unsigned int sounds like a better idea. Also enum inside the namespace is oxymoron, please use enum class
| enum PackedWeightsFormat : int { | |
| enum class PackedWeightsFormat : uint32_t { |
| static_assert(sizeof(format) + sizeof(params) == 16); | ||
| return 16; | ||
| static_assert(sizeof(magic) + sizeof(format) + sizeof(params) == 64); | ||
| return 64; |
There was a problem hiding this comment.
Why not use sizeof(XYZ)?
| return 64; | |
| return sizeof(PackedWeightsHeader); |
There was a problem hiding this comment.
I thought this made it clearer that the header is 64 bytes at a glance. I also checked and sizeof(PackedWeightsHeader) = 60, but the serialized size is still 64 bytes (I think because the static magic number doesn't count toward the size).
| inline void write(void* packed_weights) const { | ||
| auto header = (unsigned short*)(packed_weights); | ||
| header[0] = (unsigned short)format; | ||
| auto header = (int*)(packed_weights); |
There was a problem hiding this comment.
In C++ better used C++ cast-style ops
| auto header = (int*)(packed_weights); | |
| auto header = reinterpret_cast<int*>(packed_weights); |
Summary: A last minute change created a compile error on the header. This fixes the issue. I also make the header 64 bytes and add a magic number at the start to make it safer in future. Differential Revision: D64370707
abb7810 to
04fa11d
Compare
|
This pull request was exported from Phabricator. Differential Revision: D64370707 |
Summary: A last minute change created a compile error on the header. This fixes the issue. I also make the header 64 bytes and add a magic number at the start to make it safer in future. Differential Revision: D64370707
04fa11d to
0a93668
Compare
|
This pull request was exported from Phabricator. Differential Revision: D64370707 |
Summary: A last minute change created a compile error on the header. This fixes the issue. I also make the header 64 bytes and add a magic number at the start to make it safer in future. Differential Revision: D64370707
0a93668 to
610f80d
Compare
|
This pull request was exported from Phabricator. Differential Revision: D64370707 |
Summary: Pull Request resolved: pytorch#1079 A last minute change created a compile error on the header. This fixes the issue. I also make the header 64 bytes and add a magic number at the start to make it safer in future. Differential Revision: D64370707
|
Address Nikita's comments before landing, stamping to unblock if you have already done so. |
…at/ folder (pytorch#1076) * [Hackability Refactor] Move known_model_params under torchchat (pytorch#1073) * [Hackability Refactor] Migrate CLI call sites to explicitly go through torchchat.py (pytorch#1075) * [Hackability Refactor] Move model.py underneath torchchat/ (pytorch#1077) * Move model.py * Clear out init to avoid package circular import * [Hackability Refactor] Move select top level docs into folders within torchchat (pytorch#1080) * [Hackability Refactor] Move the top level util folder into torchchat/utils (pytorch#1079) * [Hackability Refactor] Move the top level util file into torchchat/utils/ * Cleared out init to avoid packing * [Hackability Refactor] Collapse gguf_util into gguf_loader (pytorch#1078) * [Hackability Refactor] Collapse gguf_util into gguf_loader * Update bad import * [Hackability Refactor] Move model_config into torchchat/model_config (pytorch#1082) * [Hackability Refactor] Move cli related files under torchchat/cli (pytorch#1083) * [Hackability Refactor] Move build/util into torchchat/utils (pytorch#1084) * [Hackability Refactor] Easy Moves: eval, gguf_loader, quantize, model_dist (pytorch#1085) * [Hackability Refactor] Easy Cheap Moves: eval, gguf_loader, quantize, model_dist * Update eval.py call sites that slipped through the initial pass * [Hackability Refactor] Update missed direct file calls to use torchchat.py (pytorch#1088) * [Hackability Refactor] Move export and generate under torchchat/ (pytorch#1089) * [Hackability Refactor] Move scripts under torchchat/utils (pytorch#1090) * [Hackability Refactor] Move scripts under torchchat/utils * Fix install script for AOTI * Update referenced path in build_android * Adding missing utils path * Add another layer for torchchat * Move the source command depending on if TC root is defined * [Hackability Refactor] Move installation related files into install/ (pytorch#1081) * [Hackability Refactor] Move installation related files into install/ * Fix install req path * Test fix with install path for bash * Debug messages * Remove changes to install in et_python_libs * Remove debug echo * Fix pin path for et * [Hackability Refactor] Restricted Lint (pytorch#1091) * [Hackability Refactor] Removing __main__ from export/generate/eval (pytorch#1092)
Summary: A last minute change created a compile error on the header. This fixes the issue.
Differential Revision: D64370707