Sheikh / git_upload.py
megharudushi's picture
Upload folder using huggingface_hub
7d3d63c verified
#!/usr/bin/env python3
"""
Git-based Hugging Face upload for Bengali AI model
Repository: megharudushi/Sheikh
"""
import os
import subprocess
def git_upload_bengali_ai():
"""Upload using Git commands"""
print("🚀 Git-based Hugging Face Upload")
print("=" * 40)
print("Repository: megharudushi/Sheikh")
# Check if model directory exists
if not os.path.exists("ready_bengali_ai"):
print("❌ Error: ready_bengali_ai directory not found!")
return False
# Show files to upload
files = os.listdir("ready_bengali_ai")
print(f"\n📁 Files to upload ({len(files)} total):")
for file in sorted(files):
size = os.path.getsize(f"ready_bengali_ai/{file}") / (1024*1024)
print(f" 📄 {file} ({size:.1f}MB)")
print("\n" + "="*50)
print("🔧 Git-based upload requires:")
print("1. git-xet installed")
print("2. SSH key configured")
print("3. Repository access permissions")
print("="*50)
try:
# Step 1: Install git-xet (if not installed)
print("\n📦 Checking git-xet installation...")
try:
result = subprocess.run(["git", "xet", "--version"], capture_output=True, text=True)
if result.returncode == 0:
print("✅ git-xet already installed")
print(f"Version: {result.stdout.strip()}")
else:
print("⚠️ git-xet not found, attempting install...")
subprocess.run(["pip", "install", "git-xet"], check=True)
print("✅ git-xet installed")
except Exception as e:
print(f"❌ git-xet install failed: {e}")
print("Please install manually: https://hf.co/docs/hub/git-xet")
# Step 2: Clone repository
print("\n📥 Cloning repository...")
repo_url = "git@hf.co:megharudushi/Sheikh"
try:
# Remove existing directory if it exists
if os.path.exists("Sheikh"):
subprocess.run(["rm", "-rf", "Sheikh"], check=True)
# Clone repository
result = subprocess.run(["git", "clone", repo_url], capture_output=True, text=True)
if result.returncode == 0:
print("✅ Repository cloned successfully")
else:
print(f"❌ Clone failed: {result.stderr}")
print("This might mean:")
print("- Repository doesn't exist yet")
print("- SSH key not configured")
print("- No access permissions")
return False
except Exception as e:
print(f"❌ Repository clone error: {e}")
return False
# Step 3: Copy model files
print("\n📤 Copying model files...")
try:
# Copy all files from ready_bengali_ai to Sheikh directory
for file in os.listdir("ready_bengali_ai"):
src = f"ready_bengali_ai/{file}"
dst = f"Sheikh/{file}"
subprocess.run(["cp", src, dst], check=True)
print(f"✅ Copied {len(files)} files")
except Exception as e:
print(f"❌ File copy failed: {e}")
return False
# Step 4: Git commit and push
print("\n📤 Committing and pushing...")
try:
os.chdir("Sheikh")
# Git add all files
subprocess.run(["git", "add", "."], check=True)
# Git commit
commit_message = "Add complete Bengali AI model - 355M parameters with tokenizer"
subprocess.run(["git", "commit", "-m", commit_message], check=True)
# Git push
print("📤 Pushing to Hugging Face...")
subprocess.run(["git", "push"], check=True)
print("\n🎉 SUCCESS! Model uploaded via Git!")
print("🌐 Repository: https://huggingface.co/megharudushi/Sheikh")
return True
except subprocess.CalledProcessError as e:
print(f"❌ Git operation failed: {e}")
print("\n🔧 Manual steps needed:")
print("1. Configure SSH key: https://huggingface.co/settings/keys")
print("2. Ensure repository access")
print("3. Run: git push")
return False
except Exception as e:
print(f"❌ Upload failed: {e}")
return False
def create_manual_instructions():
"""Create manual upload instructions"""
instructions = """# Manual Git Upload Instructions
## Prerequisites
1. **Install git-xet**: https://hf.co/docs/hub/git-xet
2. **Configure SSH key**: https://huggingface.co/settings/keys
3. **Repository access**: Ensure you have write access to megharudushi/Sheikh
## Manual Commands
```bash
# 1. Clone repository
git clone git@hf.co:megharudushi/Sheikh
# 2. Copy model files
cp ready_bengali_ai/* Sheikh/
# 3. Commit and push
cd Sheikh
git add .
git commit -m "Add Bengali AI model - 355M parameters"
git push
```
## Files to Upload
- model.bin (1.4GB) - Model weights
- tokenizer.json (3.4MB) - Tokenizer config
- vocab.json (780KB) - Vocabulary
- config.json (13KB) - Model config
- README.md - Model documentation
- And 6 other configuration files
## After Upload
Your model will be available at:
https://huggingface.co/megharudushi/Sheikh
"""
with open("MANUAL_GIT_UPLOAD.md", "w", encoding="utf-8") as f:
f.write(instructions)
print("📄 Created manual instructions: MANUAL_GIT_UPLOAD.md")
if __name__ == "__main__":
print("🇧🇩 BANGLI AI - GIT UPLOAD")
print("=" * 35)
# Create manual instructions
create_manual_instructions()
# Attempt git upload
success = git_upload_bengali_ai()
if success:
print("\n🎊 Git upload successful!")
print("Your Bengali AI is now live on Hugging Face!")
else:
print("\n⚠️ Git upload requires manual setup.")
print("Please follow the manual instructions in MANUAL_GIT_UPLOAD.md")
print("Or use the Python API approach instead.")