Skip to content

Fix KMP_AFFINITY incorrectly set for non-CPU training - #3912

Merged
SunMarc merged 1 commit into
huggingface:mainfrom
hexfaker:main
Jan 27, 2026
Merged

SunMarc merged 1 commit into
huggingface:mainfrom
hexfaker:main

Conversation

@hexfaker

Copy link
Copy Markdown
Contributor

What does this PR do?

Fix for #3911

The string "False" is truthy in Python, so if current_env["ACCELERATE_USE_CPU"]: always evaluates to True. Use parse_flag_from_env() for proper boolean parsing.

The string "False" is truthy in Python, so `if current_env["ACCELERATE_USE_CPU"]:` always evaluates to True. Use parse_flag_from_env() for proper boolean parsing.

@SunMarc SunMarc left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Indeed, thanks for this fix !

@SunMarc
SunMarc merged commit c231e51 into huggingface:main Jan 27, 2026
15 of 25 checks passed
@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

SunMarc added a commit that referenced this pull request Sep 8, 2026
* Fix accelerate launch --cpu never setting the KMP variables

#3912 gated KMP_AFFINITY and KMP_BLOCKTIME on CPU mode with:

    parse_flag_from_env(current_env["ACCELERATE_USE_CPU"], False)

`parse_flag_from_env` takes an environment variable *name*, not a value, and
does `os.environ.get(key, str(default))`. It is handed the string "True" or
"False" here, looks for an environment variable by that name, does not find
one and returns the default. The guard is therefore always False, so the two
variables are never set, including for `accelerate launch --cpu`.

Before #3912 the condition was `if current_env["ACCELERATE_USE_CPU"]:`, which
was always True because "False" is a non-empty string, so KMP_AFFINITY was set
on GPU launches too. That was the bug #3912 set out to fix; it swapped one
constant for the other.

Test the flag itself, the way the line above it already does, and drop the
import that was added only for the broken call.

* Update src/accelerate/utils/launch.py

* Update src/accelerate/utils/launch.py

---------

Co-authored-by: Marc Sun <57196510+SunMarc@users.noreply.github.com>
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.

3 participants