Spaces:
Running
Running
Joseph Pollack
adds automatic authentication , dataset readme , push to hub automation , demo , readme , and interface improvements
676b3f3
unverified
| #!/usr/bin/env python3 | |
| """ | |
| Test Hugging Face Setup for Trackio Integration | |
| This script helps verify your Hugging Face token setup and test space name generation. | |
| Run this before using the training scripts to ensure everything is configured correctly. | |
| Authentication: | |
| This script only checks for HF_TOKEN or HUGGINGFACE_HUB_TOKEN environment variables. | |
| It does NOT use huggingface-cli login state. | |
| Setup: | |
| Linux/Mac: export HF_TOKEN=your_token_here | |
| Windows: set HF_TOKEN=your_token_here | |
| Or: export HUGGINGFACE_HUB_TOKEN=your_token_here | |
| Get your token from: https://huggingface.co/settings/tokens | |
| """ | |
| import os | |
| from datetime import datetime | |
| from typing import Tuple, Optional | |
| from huggingface_hub import HfApi | |
| def validate_hf_token(token: str) -> Tuple[bool, Optional[str], Optional[str]]: | |
| """ | |
| Validate a Hugging Face token and return the username. | |
| Args: | |
| token (str): The Hugging Face token to validate | |
| Returns: | |
| Tuple[bool, Optional[str], Optional[str]]: | |
| - success: True if token is valid, False otherwise | |
| - username: The username associated with the token (if valid) | |
| - error_message: Error message if validation failed | |
| """ | |
| try: | |
| # Create API client with token directly | |
| api = HfApi(token=token) | |
| # Try to get user info - this will fail if token is invalid | |
| user_info = api.whoami() | |
| # Extract username from user info | |
| username = user_info.get("name", user_info.get("username")) | |
| if not username: | |
| return False, None, "Could not retrieve username from token" | |
| return True, username, None | |
| except Exception as e: | |
| error_msg = str(e) | |
| if "401" in error_msg or "unauthorized" in error_msg.lower(): | |
| return False, None, "Invalid token - unauthorized access" | |
| elif "403" in error_msg: | |
| return False, None, "Token lacks required permissions" | |
| elif "network" in error_msg.lower() or "connection" in error_msg.lower(): | |
| return False, None, f"Network error: {error_msg}" | |
| else: | |
| return False, None, f"Validation error: {error_msg}" | |
| def get_default_space_name(project_type: str = "voxtral-asr-finetuning") -> str: | |
| """ | |
| Generate a default space name with username and timestamp. | |
| Args: | |
| project_type: Type of project (e.g., "voxtral-asr-finetuning", "voxtral-lora-finetuning") | |
| Returns: | |
| str: Default space name in format "username/project-type-timestamp" | |
| """ | |
| try: | |
| # Get token from environment variables only | |
| token = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") | |
| if not token: | |
| return None | |
| # Validate token and get username | |
| success, username, error = validate_hf_token(token) | |
| if success and username: | |
| timestamp = datetime.now().strftime("%Y%m%d-%H%M%S") | |
| return f"{username}/{project_type}-{timestamp}" | |
| else: | |
| return None | |
| except Exception as e: | |
| print(f"Failed to generate default space name: {e}") | |
| return None | |
| def main(): | |
| print("π Testing Hugging Face Setup for Trackio Integration") | |
| print("=" * 60) | |
| # Check for tokens | |
| print("\n1. Checking for Hugging Face tokens...") | |
| token = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") | |
| if token: | |
| print(f"β Found token in environment: {token[:10]}...") | |
| else: | |
| print("β No token found in environment variables") | |
| print("\nβ No Hugging Face token found!") | |
| print("Please set the HF_TOKEN environment variable:") | |
| print(" Linux/Mac: export HF_TOKEN=your_token_here") | |
| print(" Windows: set HF_TOKEN=your_token_here") | |
| print(" Or: set HUGGINGFACE_HUB_TOKEN=your_token_here") | |
| print("\nGet your token from: https://huggingface.co/settings/tokens") | |
| return | |
| # Validate token | |
| print("\n2. Validating token...") | |
| success, username, error = validate_hf_token(token) | |
| if success: | |
| print(f"β Token is valid! Username: {username}") | |
| else: | |
| print(f"β Token validation failed: {error}") | |
| return | |
| # Generate space names | |
| print("\n3. Generating default space names...") | |
| full_finetune_space = get_default_space_name("voxtral-asr-finetuning") | |
| lora_finetune_space = get_default_space_name("voxtral-lora-finetuning") | |
| print(f"π Full fine-tuning space: {full_finetune_space}") | |
| print(f"π LoRA fine-tuning space: {lora_finetune_space}") | |
| print("\nβ Setup complete! You can now run training scripts.") | |
| print(" They will automatically use the generated space names.") | |
| print("\nπ‘ To override the auto-generated names, use --trackio-space yourname/custom-space") | |
| if __name__ == "__main__": | |
| main() | |