File size: 2,727 Bytes
50657ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f195d41
 
 
 
 
 
 
 
50657ac
 
f195d41
50657ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
61
62
63
64
65
66
67
68
69
70
71
# Actualisation hebdomadaire de la base

La source est le dataset public
[`cfahlgren1/hub-stats`](https://huggingface.co/datasets/cfahlgren1/hub-stats).
Le pipeline télécharge ses configurations `models` et `datasets`, reconstruit
hors ligne une base Neo4j, crée `neo4j.dump`, puis publie ce dump et son fichier
`database_metadata.json` dans le dataset privé configuré.

Le Space continue à utiliser le dump précédent pendant toute la reconstruction.
Il ne voit la nouvelle base qu'après un redémarrage. La date affichée dans
l'interface vient de `database_metadata.json`; elle n'est donc mise à jour que
si la reconstruction et la publication ont réussi.

## Test sans modifier la production

Le dépôt de dumps accepte une branche de test :

```bash
export HF_TOKEN=hf_...
bash database_refresh/run_weekly_refresh.sh \
  --dump-revision weekly-refresh
```

Pour un test rapide du prétraitement :

```bash
bash database_refresh/run_weekly_refresh.sh \
  --max-models 10000 \
  --max-datasets 10000 \
  --prepare-only
```

## Job Hugging Face hebdomadaire

Le Job peut monter en lecture la branche du Space qui contient ce script et
utiliser l'image Neo4j correspondant exactement à celle de l'application :

Le compte qui crée le Job doit avoir au minimum le rôle `write` dans
l'organisation CNIL. Le token utilisé par la CLI doit explicitement autoriser
`Start and manage Jobs`. Puisque le même token est transmis au Job avec
`--secrets HF_TOKEN`, il doit également pouvoir écrire dans
`cnil/genmod-dump-neo4j` et redémarrer le Space ciblé. L'option
`--namespace cnil` est indispensable pour créer et facturer le Job sous
l'organisation plutôt que sous le compte personnel.

```bash
hf jobs scheduled run "@weekly" \
  --namespace cnil \
  --name genmod-weekly-database-refresh \
  --flavor cpu-basic \
  --timeout 12h \
  --no-concurrency \
  --secrets HF_TOKEN \
  --env NEO4J_DUMP_REPO=cnil/genmod-dump-neo4j \
  --env NEO4J_DUMP_REVISION=weekly-refresh \
  --env SPACES_TO_RESTART=cnil/genmod-faster \
  --volume hf://spaces/cnil/genmod@refresh-hub-database:/workspace:ro \
  neo4j:2025.09.0-community \
  bash /workspace/database_refresh/run_weekly_refresh.sh
```

La révision `weekly-refresh` permet de valider le nouveau dump avec
`genmod-faster` sans remplacer le dump de production. Après validation, il
suffit de programmer le même Job avec `NEO4J_DUMP_REVISION=main`.
Pour la production, `SPACES_TO_RESTART` doit alors être remplacé par
`cnil/genmod`.

Les Hugging Face Jobs nécessitent un solde positif et sont facturés uniquement
pendant leur exécution. Un Space CPU Basic ne constitue pas à lui seul un cron
fiable : il peut être mis en veille et son disque est éphémère.