| |
| """ |
| Launch AWS instance for GPT-2 Medium training using configured credentials. |
| """ |
|
|
| import os |
| import sys |
| import subprocess |
| from pathlib import Path |
|
|
| def get_wandb_key(): |
| """Get Wandb API key from configured sources.""" |
| |
| key = os.environ.get('WANDB_API_KEY') |
| if key: |
| return key |
|
|
| |
| wandb_config = Path.home() / '.netrc' |
| if wandb_config.exists(): |
| with open(wandb_config) as f: |
| for line in f: |
| if 'password' in line and 'api.wandb.ai' in f.read(): |
| parts = line.split() |
| if len(parts) >= 2: |
| return parts[1] |
|
|
| |
| wandb_config = Path.home() / '.config' / 'wandb' / 'settings' |
| if wandb_config.exists(): |
| with open(wandb_config) as f: |
| for line in f: |
| if line.startswith('api_key'): |
| return line.split('=')[1].strip() |
|
|
| return None |
|
|
| def get_hf_token(): |
| """Get HuggingFace token from configured sources.""" |
| |
| token = os.environ.get('HF_TOKEN') or os.environ.get('HUGGING_FACE_HUB_TOKEN') |
| if token: |
| return token |
|
|
| |
| hf_config = Path.home() / '.huggingface' / 'token' |
| if hf_config.exists(): |
| with open(hf_config) as f: |
| return f.read().strip() |
|
|
| return None |
|
|
| def main(): |
| print("="*60) |
| print("Launching GPT-2 Medium Training on AWS") |
| print("="*60) |
| print() |
|
|
| |
| wandb_key = get_wandb_key() |
| hf_token = get_hf_token() |
|
|
| if not wandb_key: |
| print("ERROR: Wandb API key not found!") |
| print() |
| print("Configure with:") |
| print(" wandb login") |
| print() |
| print("Or set environment variable:") |
| print(" export WANDB_API_KEY=your_key") |
| sys.exit(1) |
|
|
| print(f"✓ Wandb API key found: {wandb_key[:10]}...") |
|
|
| if hf_token: |
| print(f"✓ HuggingFace token found: {hf_token[:10]}...") |
| else: |
| print("⚠ HuggingFace token not found (optional)") |
| print(" Model won't be pushed to Hub") |
|
|
| print() |
| print("Launching AWS instance...") |
| print() |
|
|
| |
| script_dir = Path(__file__).parent.parent / 'scripts' / 'aws' |
| launch_script = script_dir / 'launch_medium_training.sh' |
|
|
| cmd = [ |
| 'bash', |
| str(launch_script), |
| '--wandb-key', wandb_key, |
| ] |
|
|
| if hf_token: |
| cmd.extend(['--hf-token', hf_token]) |
|
|
| try: |
| subprocess.run(cmd, check=True) |
| except subprocess.CalledProcessError as e: |
| print(f"\nERROR: Failed to launch instance: {e}") |
| sys.exit(1) |
|
|
| if __name__ == '__main__': |
| main() |
|
|