-
Notifications
You must be signed in to change notification settings - Fork 198
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
Header bug fix #1079
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is wrong with this check?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
@@ -10,44 +10,47 @@ | |||
#include <cassert> | |||
namespace torchao::ops { | |||
|
|||
enum PackedWeightsFormat : unsigned short { | |||
enum PackedWeightsFormat : int { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not use sizeof(XYZ)?
return 64; | |
return sizeof(PackedWeightsHeader); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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