|
|
import os |
|
|
import sys |
|
|
import glob |
|
|
import shutil |
|
|
from huggingface_hub import HfApi, create_repo, upload_folder |
|
|
from config import Config |
|
|
|
|
|
def main(): |
|
|
print("🚀 开始全量上传 (All-in-One) 到 robot4/sentiment-analysis-bert-finetuned ...") |
|
|
|
|
|
api = HfApi() |
|
|
try: |
|
|
user_info = api.whoami() |
|
|
username = user_info['name'] |
|
|
print(f"✅ User: {username}") |
|
|
except: |
|
|
print("❌ Please login first.") |
|
|
return |
|
|
|
|
|
|
|
|
target_repo_id = "robot4/sentiment-analysis-bert-finetuned" |
|
|
|
|
|
|
|
|
upload_dir = "hf_upload_staging" |
|
|
if os.path.exists(upload_dir): |
|
|
shutil.rmtree(upload_dir) |
|
|
os.makedirs(upload_dir) |
|
|
|
|
|
print(f"📦 正在打包所有文件到 {upload_dir}...") |
|
|
|
|
|
|
|
|
|
|
|
items_to_copy = [ |
|
|
"src", "notebooks", "docs", "demo", "data", |
|
|
"README.md", "requirements.txt", "*.pptx" |
|
|
] |
|
|
|
|
|
for pattern in items_to_copy: |
|
|
for item in glob.glob(pattern): |
|
|
dest = os.path.join(upload_dir, item) |
|
|
print(f" - Adding {item}...") |
|
|
if os.path.isdir(item): |
|
|
shutil.copytree(item, dest, dirs_exist_ok=True) |
|
|
else: |
|
|
shutil.copy2(item, dest) |
|
|
|
|
|
|
|
|
results_dest = os.path.join(upload_dir, "results") |
|
|
os.makedirs(results_dest, exist_ok=True) |
|
|
|
|
|
|
|
|
if os.path.exists("results/images"): |
|
|
shutil.copytree("results/images", os.path.join(results_dest, "images"), dirs_exist_ok=True) |
|
|
|
|
|
for txt in glob.glob("results/*.txt"): |
|
|
shutil.copy2(txt, results_dest) |
|
|
|
|
|
|
|
|
candidates = glob.glob(os.path.join(Config.RESULTS_DIR, "checkpoint-*")) |
|
|
candidates = [c for c in candidates if os.path.isdir(c)] |
|
|
|
|
|
if candidates: |
|
|
candidates.sort(key=os.path.getmtime) |
|
|
latest_ckpt = candidates[-1] |
|
|
print(f"✅ 提取最新模型权重: {latest_ckpt} -> 根目录") |
|
|
|
|
|
model_files = ["config.json", "model.safetensors", "pytorch_model.bin", "tokenizer.json", "vocab.txt", "tokenizer_config.json", "special_tokens_map.json"] |
|
|
|
|
|
for fname in os.listdir(latest_ckpt): |
|
|
if fname in model_files or fname.endswith(".safetensors") or fname.endswith(".bin"): |
|
|
shutil.copy2(os.path.join(latest_ckpt, fname), os.path.join(upload_dir, fname)) |
|
|
else: |
|
|
print("⚠️ 未找到 Checkpoint,仅上传代码和数据。") |
|
|
|
|
|
|
|
|
print(f"\n⬆️ 正在上传所有文件到 https://huggingface.co/{target_repo_id}") |
|
|
create_repo(repo_id=target_repo_id, repo_type="model", exist_ok=True) |
|
|
|
|
|
upload_folder( |
|
|
folder_path=upload_dir, |
|
|
repo_id=target_repo_id, |
|
|
repo_type="model" |
|
|
) |
|
|
|
|
|
|
|
|
shutil.rmtree(upload_dir) |
|
|
print("🎉 上传完毕!") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
current_dir = os.path.dirname(os.path.abspath(__file__)) |
|
|
parent_dir = os.path.dirname(current_dir) |
|
|
sys.path.append(parent_dir) |
|
|
main() |
|
|
|