Fix indentation handling in grpo_trainer return statement replacement
Use regex to dynamically detect and preserve the original indentation when replacing the 'return output' statement, instead of hardcoding spaces. This ensures the patched code maintains consistent indentation regardless of the original formatting.
This commit is contained in:
parent
c8e7bd9f09
commit
fe21809bda
1 changed files with 11 additions and 7 deletions
|
|
@ -388,13 +388,17 @@ def grpo_trainer__generate_and_score_completions(function_name, function):
|
|||
patched = patched[: match.start()] + wrapped + patched[match.end() :]
|
||||
|
||||
function = patched
|
||||
|
||||
match = re.search(r'^(\s*)return output', function, re.MULTILINE)
|
||||
|
||||
function = function.replace(
|
||||
" return output",
|
||||
""" if not _was_training:
|
||||
self.model.for_inference()
|
||||
return output""",
|
||||
)
|
||||
if match:
|
||||
indent = match.group(1)
|
||||
function = function.replace(
|
||||
f"{indent}return output",
|
||||
f"""{indent}if not _was_training:
|
||||
{indent} self.model.for_inference()
|
||||
{indent}return output"""
|
||||
)
|
||||
|
||||
return function
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue