-
Notifications
You must be signed in to change notification settings - Fork 25.9k
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
Automatic safetensors conversion when lacking these files #29390
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -1428,7 +1428,7 @@ def test_safetensors_on_the_fly_wrong_user_opened_pr(self): | |||||
bot_opened_pr_title = None | ||||||
|
||||||
for discussion in discussions: | ||||||
if discussion.author == "SFconvertBot": | ||||||
if discussion.author == "SFconvertbot": | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ➕ on @julien-c's comment, have had feedback that this is not explicit enough.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we can't change the account name now but we will think of a way to make it clearer in the UI that it's a "official bot" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sounds good 👍🏻 |
||||||
bot_opened_pr = True | ||||||
bot_opened_pr_title = discussion.title | ||||||
|
||||||
|
@@ -1451,6 +1451,32 @@ def test_safetensors_on_the_fly_specific_revision(self): | |||||
with self.assertRaises(EnvironmentError): | ||||||
BertModel.from_pretrained(self.repo_name, use_safetensors=True, token=self.token, revision="new-branch") | ||||||
|
||||||
def test_absence_of_safetensors_triggers_conversion(self): | ||||||
config = BertConfig( | ||||||
vocab_size=99, hidden_size=32, num_hidden_layers=5, num_attention_heads=4, intermediate_size=37 | ||||||
) | ||||||
initial_model = BertModel(config) | ||||||
|
||||||
# Push a model on `main` | ||||||
initial_model.push_to_hub(self.repo_name, token=self.token, safe_serialization=False) | ||||||
|
||||||
initial_model = BertModel.from_pretrained(self.repo_name, token=self.token) | ||||||
BertModel._auto_conversion.join() | ||||||
|
||||||
with self.subTest("PR was open with the safetensors account"): | ||||||
discussions = self.api.get_repo_discussions(self.repo_name) | ||||||
|
||||||
bot_opened_pr = None | ||||||
bot_opened_pr_title = None | ||||||
|
||||||
for discussion in discussions: | ||||||
if discussion.author == "SFconvertbot": | ||||||
bot_opened_pr = True | ||||||
bot_opened_pr_title = discussion.title | ||||||
|
||||||
self.assertTrue(bot_opened_pr) | ||||||
self.assertEqual(bot_opened_pr_title, "Adding `safetensors` variant of this model") | ||||||
|
||||||
|
||||||
@require_torch | ||||||
@is_staging_test | ||||||
|
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.
@Wauplin curious if you have a better idea in mind to have access to the thread started here; I don't need to join it during runtime, I'm only attributing it to the class here so that I can access it within the test files (but not super keen on modifying internals just for the tests to be simpler ...)
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.
@LysandreJik I'm not shocked by having a
cls._auto_conversion
attribute TBH. Though a solution to get rid of it is to give a name to the thread. Something like that:and then in the tests:
Thread names don't have to be unique BTW (they have a thread id anyway). But I think it's best to at least assign a unique number to the name.
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.
But it's quite hacky IMO. In a simple case it should work fine but if you start to have several threads / parallel tests, it might get harder to be 100% sure the thread you've started is indeed the one you retrieve in the test logic.
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.
yeah here it's really only for testing and I don't want to depend on a flaky
time.sleep
or something so ensuring that the thread joins first is optimal. The thread name is actually much better IMO, I'll implement that! Thanks a lot!