File size: 1,665 Bytes
064e771
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from __future__ import annotations

from pathlib import Path

from huggingface_hub import HfApi


USERNAME = "Sami94"
ROOT = Path(__file__).resolve().parents[1]


MODEL_REPOS = {
    f"{USERNAME}/ppo-LunarLander-v2": ROOT / "artifacts/unit1/ppo-LunarLander-v2",
    f"{USERNAME}/q-FrozenLake-v1-4x4-noSlippery": ROOT / "artifacts/unit2/q-FrozenLake-v1-4x4-noSlippery",
    f"{USERNAME}/q-Taxi-v3": ROOT / "artifacts/unit2/q-Taxi-v3",
}

COURSE_REPO = f"{USERNAME}/hf-deep-rl-course-certification"


def upload_model_repo(api: HfApi, repo_id: str, folder: Path) -> None:
    if not folder.exists():
        print(f"SKIP {repo_id}: missing folder {folder}")
        return

    api.create_repo(repo_id=repo_id, repo_type="model", exist_ok=True)
    api.upload_folder(repo_id=repo_id, repo_type="model", folder_path=folder, path_in_repo=".")
    print(f"Uploaded model repo: https://huggingface.co/{repo_id}")


def upload_course_folder(api: HfApi) -> None:
    api.create_repo(repo_id=COURSE_REPO, repo_type="model", exist_ok=True)
    api.upload_folder(
        repo_id=COURSE_REPO,
        repo_type="model",
        folder_path=ROOT,
        path_in_repo=".",
        ignore_patterns=[
            ".git/*",
            "__pycache__/*",
            "*.pyc",
        ],
    )
    print(f"Uploaded course folder: https://huggingface.co/{COURSE_REPO}")


def main() -> None:
    api = HfApi()
    whoami = api.whoami()
    print(f"Authenticated as: {whoami.get('name')} ({whoami.get('fullname')})")

    for repo_id, folder in MODEL_REPOS.items():
        upload_model_repo(api, repo_id, folder)

    upload_course_folder(api)


if __name__ == "__main__":
    main()