Apprentissage du RNSR avec répartition géographique - essai avec DVC

@François Parmentier François Parmentier authored on 21 Jul
.dvc chore(dvc): Add a file to DVC 4 months ago
.vscode chore(vscode,dvc,yaml): Make DVC files YAML files 4 months ago
bin fix(assign-to-areas): One area seemed to be undefined 4 months ago
data feat(dvc.yaml): Reorganize dvc.yaml 4 months ago
libs feat(params): Add getParam 4 months ago
.dvcignore chore(dvc): Initialize DVC in the repo 4 months ago
.gitignore feat(create-tree): Create areas directory 4 months ago
README.md docs: Add diagram 4 months ago
dvc.lock chore(dvc): Integrate test-to-areas into split stage 4 months ago
dvc.yaml chore(dvc): Integrate test-to-areas into split stage 4 months ago
package-lock.json feat(params): Add getParam 4 months ago
package.json feat(params): Add getParam 4 months ago
params.yaml feat(dvc.yaml): Reorganize dvc.yaml 4 months ago
README.md

rnsr-geo-ml-dvc

Apprentissage du RNSR avec répartition géographique - essai avec DVC.

Voir les travaux précédents: https://gitbucket.inist.fr/parmentf/rnsr-ml.

DVC

Initialisation

La documentation de l'extension DVC de VSCode dit que pour initialiser le dépôt il faut taper dvc exp init -i, mais ça ne marche pas avec ma version de DVC (qui est apparemment plus récente que ce à quoi s'attend l'extension).

$ dvc init  
Initialized DVC repository.

You can now commit the changes to git.

+---------------------------------------------------------------------+
|                                                                     |
|        DVC has enabled anonymous aggregate usage analytics.         |
|     Read the analytics documentation (and how to opt-out) here:     |
|             <https://dvc.org/doc/user-guide/analytics>              |
|                                                                     |
+---------------------------------------------------------------------+

What's next?
------------
- Check out the documentation: <https://dvc.org/doc>
- Get help and share ideas: <https://dvc.org/chat>
- Star us on GitHub: <https://github.com/iterative/dvc>

Cette commande a créé:

  • .dvcignore
  • .dvc
    • .gitignore
    • config

Alors que l'installation de l'extension VSCode a ajouté:

  • .vscode
    • settings.json

Pour créer un remote, je tape dvc remote add -d local /home/parmentf/data/dvc.
Il faut juste que le répertoire existe (et soit vide ou déjà consacré à ça).

Ajout de fichier

$ dvc add data/netscity-ville-aire-uniq.tsv 
100% Adding...|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|1/1 [00:00, 20.28file/s]
                                                                                                                                                                                                                               
To track the changes with git, run:

    git add data/netscity-ville-aire-uniq.tsv.dvc data/.gitignore

To enable auto staging, run:

        dvc config core.autostage true

Donc, si on veut se simplifier la vie sur les ajouts suivants:

dvc config core.autostage true

Experiments

Pour initialiser le fichier dvc.yaml, générant les expériences, on peut utiliser dvc exp init --interactive.

Pour lancer le pipeline d'une expérience, il suffit de faire dvc repro.

Les fichiers résultats outs d'un stage (une étape) sont automatiquement ajoutés à DVC.

Diagram

dvc dag --mermaid (ou dvc dag --md) permet de visualiser ça (dans VSCode, il y a l'extension Markdown Preview Mermaid Support):

flowchart TD
  node1["data/addresses-40-cnrs-rnsr-big-classes-test.txt.dvc"]
  node3["data/netscity-ville-aire-uniq.tsv.dvc"]
  node2["data/addresses-40-cnrs-rnsr-big-classes-train.txt.dvc"]
  node4["extract-areas@test"]
  node5["extract-areas@train"]
  node6["prepare@test"]
  node7["prepare@train"]
  node8["split"]
  node1-->node6
  node2-->node7
  node3-->node6
  node3-->node7
  node5-->node8
  node6-->node4
  node7-->node5
  node7-->node8

Aires géographiques

Le split donne 100 aires géographiques, dont plus de 50 avec moins de 40 adresses.

On les rassemble donc dans areas/GatheredLittleAreas, ce qui laisse 48 aires (dont celle-ci) avec au moins 40 (inclus) aires.