Spaces:
Sleeping
Sleeping
| """ | |
| سكربت رفع الملفات الكبيرة (الفهرس + المعجم + النموذج) إلى Hugging Face Hub، | |
| بعد بنائها محلياً عبر scripts/build_embeddings.py. | |
| يُشغَّل مرة واحدة فقط (أو عند تحديث المعجم/النموذج)، وليس جزءاً من تشغيل | |
| الحاوية في الإنتاج. | |
| يتطلب: | |
| - تسجيل دخول إلى Hugging Face (huggingface-cli login) | |
| أو تعيين متغير البيئة HF_TOKEN | |
| الاستخدام: | |
| python -m scripts.upload_assets --data # رفع الفهرس + المعجم | |
| python -m scripts.upload_assets --model # رفع نموذج الاسترجاع | |
| python -m scripts.upload_assets --data --model | |
| """ | |
| import argparse | |
| import sys | |
| from pathlib import Path | |
| from huggingface_hub import HfApi | |
| sys.path.append(str(Path(__file__).resolve().parent.parent)) | |
| from app import config # noqa: E402 | |
| def upload_data(api: HfApi) -> None: | |
| if not config.HF_DATA_REPO: | |
| raise RuntimeError("متغير البيئة HF_DATA_REPO غير مُعرَّف") | |
| for path in (config.FAISS_INDEX_PATH, config.LEXICON_WORDS_PATH): | |
| if not path.exists(): | |
| raise FileNotFoundError( | |
| f"الملف غير موجود: {path}\n" | |
| "شغّلي scripts/build_embeddings.py أولاً" | |
| ) | |
| api.create_repo(repo_id=config.HF_DATA_REPO, repo_type="dataset", exist_ok=True) | |
| for path in (config.FAISS_INDEX_PATH, config.LEXICON_WORDS_PATH): | |
| print(f"⬆️ رفع {path.name} إلى {config.HF_DATA_REPO} ...") | |
| api.upload_file( | |
| path_or_fileobj=str(path), | |
| path_in_repo=path.name, | |
| repo_id=config.HF_DATA_REPO, | |
| repo_type="dataset", | |
| ) | |
| print("✅ تم رفع الفهرس والمعجم بنجاح") | |
| def upload_model(api: HfApi) -> None: | |
| if not config.HF_MODEL_REPO: | |
| raise RuntimeError("متغير البيئة HF_MODEL_REPO غير مُعرَّف") | |
| if not config.RETRIEVAL_MODEL_PATH.exists(): | |
| raise FileNotFoundError(f"مجلد النموذج غير موجود: {config.RETRIEVAL_MODEL_PATH}") | |
| api.create_repo(repo_id=config.HF_MODEL_REPO, repo_type="model", exist_ok=True) | |
| print(f"⬆️ رفع مجلد النموذج إلى {config.HF_MODEL_REPO} ...") | |
| api.upload_folder( | |
| folder_path=str(config.RETRIEVAL_MODEL_PATH), | |
| repo_id=config.HF_MODEL_REPO, | |
| repo_type="model", | |
| ) | |
| print("✅ تم رفع النموذج بنجاح") | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--data", action="store_true", help="رفع الفهرس + المعجم") | |
| parser.add_argument("--model", action="store_true", help="رفع نموذج الاسترجاع") | |
| args = parser.parse_args() | |
| if not args.data and not args.model: | |
| parser.error("يجب تحديد --data أو --model أو كلاهما") | |
| api = HfApi() | |
| if args.data: | |
| upload_data(api) | |
| if args.model: | |
| upload_model(api) | |
| if __name__ == "__main__": | |
| main() | |