aws / aws/sagemaker-python-sdk

Support git_config parameter in SourceCode or ModelTrainer

Open
#5,571 0 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
2.3k
Forks
1.3k
Avg merge
1d 22h
Merged PRs (30d)
35

Description

**Describe the feature you'd like**
Add `git_config` parameter support to the SourceCode class (or directly to ModelTrainer) to enable fetching source code directly from Git repositories, similar to the functionality available in JumpStart models and v2 [Estimator classes](https://sagemaker.readthedocs.io/en/v2/api/training/estimators.html).

The `git_config` parameter should accept a dictionary with the following keys:
- `repo` (required): Git repository URL (https, http, git@, or ssh://)
- `branch` (optional): Branch name (defaults to 'master')
- `commit` (optional): Specific commit hash
- `2FA_enabled` (optional): Boolean for GitHub 2FA authentication
- `username`, `password`, `token` (optional): Authentication credentials

**How would this feature be used? Please describe.**
This feature would allow users to reference training code stored in Git repositories without manually cloning them first. This is particularly useful for:

1. CI/CD pipelines - Automatically pull the latest training code from a repository
2. Team collaboration - Share training scripts via version control without S3 uploads
3. Reproducibility - Pin to specific commits for exact code versioning

**Describe alternatives you've considered**
Current workarounds include:
1. Manual cloning - Clone the repository locally before creating ModelTrainer, then use local `source_dir`
2. S3 upload - Upload code to S3 and reference it via S3 URI in `source_dir`
3. Use legacy estimators - Switch to older Estimator classes that support `git_config`

**Additional context**
The SDK already has the infrastructure for this feature:
- `sagemaker.core.git_utils.git_clone_repo()` handles Git cloning with authentication
- `sagemaker.core.git_utils._sanitize_git_url()` provides security validation
- JumpStart models (`JumpStartModelInitKwargs`) already support `git_config`

Contributor guide

Open the contributing guide

Research direction

Start with SourceCode and ModelTrainer, then compare their initialization paths with JumpStartModelInitKwargs and the v2 Estimator git_config behavior. Read sagemaker.core.git_utils.git_clone_repo() and _sanitize_git_url() first; done means accepting the specified dictionary keys and fetching the requested repository, branch, or commit with supported authentication.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, git, python
Domain
machine-learning
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.