[{"data":1,"prerenderedAt":908},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-projets-senland":66,"-fr-projets-senland-surround":903},[4,50,60],{"title":5,"path":6,"stem":7,"children":8},"L'École Gray Scott","/fr/gray-scott-school","fr/1.gray-scott-school/01.index",[9,10,14,18,22,26,30,34,38,42,46],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Présentation CINERI","/fr/gray-scott-school/presentation-cineri","fr/1.gray-scott-school/02.presentation-cineri",{"title":15,"path":16,"stem":17},"Jour 1 — Fondations","/fr/gray-scott-school/jour-1","fr/1.gray-scott-school/03.jour-1",{"title":19,"path":20,"stem":21},"Jour 2 — C++ sur CPU","/fr/gray-scott-school/jour-2","fr/1.gray-scott-school/04.jour-2",{"title":23,"path":24,"stem":25},"Jour 3 — Fortran sur CPU","/fr/gray-scott-school/jour-3","fr/1.gray-scott-school/05.jour-3",{"title":27,"path":28,"stem":29},"Jour 4 — Kokkos sur CPU","/fr/gray-scott-school/jour-4","fr/1.gray-scott-school/06.jour-4",{"title":31,"path":32,"stem":33},"Jour 5 — Python sur CPU","/fr/gray-scott-school/jour-5","fr/1.gray-scott-school/07.jour-5",{"title":35,"path":36,"stem":37},"Jour 6 — SIMD avec EVE + architecture GPU","/fr/gray-scott-school/jour-6","fr/1.gray-scott-school/08.jour-6",{"title":39,"path":40,"stem":41},"Jour 7 — Python sur GPU","/fr/gray-scott-school/jour-7","fr/1.gray-scott-school/09.jour-7",{"title":43,"path":44,"stem":45},"Jour 8 — Fortran sur GPU","/fr/gray-scott-school/jour-8","fr/1.gray-scott-school/10.jour-8",{"title":47,"path":48,"stem":49},"Jour 9 — Kokkos sur GPU","/fr/gray-scott-school/jour-9","fr/1.gray-scott-school/11.jour-9",{"title":51,"path":52,"stem":53,"children":54},"Projets","/fr/projets","fr/2.projets/1.index",[55,56],{"title":51,"path":52,"stem":53},{"title":57,"path":58,"stem":59},"SenLand","/fr/projets/senland","fr/2.projets/2.senland",{"title":61,"path":62,"stem":63,"children":64},"À propos","/fr/a-propos","fr/3.a-propos/1.index",[65],{"title":61,"path":62,"stem":63},{"id":67,"title":57,"badge":68,"body":69,"category":68,"description":890,"extension":891,"links":892,"meta":898,"navigation":900,"path":58,"seo":901,"stem":59,"tags":68,"__hash__":902},"docs_fr/fr/2.projets/2.senland.md",null,{"type":70,"value":71,"toc":873},"minimark",[72,77,98,104,108,115,119,122,140,144,155,160,164,178,185,191,197,203,207,214,263,274,277,281,308,311,326,330,337,343,367,377,381,392,416,424,428,435,441,445,483,547,550,579,587,591,614,691,696,702,705,743,756,760,767,865,868],[73,74,76],"h2",{"id":75},"senland-loccupation-des-sols-du-sénégal-par-deep-learning","SenLand — l'occupation des sols du Sénégal par deep learning",[78,79,80,81,85,86,89,90,93,94,97],"p",{},"Un vrai projet IA, exécuté pour de vrai — ",[82,83,84],"strong",{},"entièrement sur un seul portable",", avec les\ntechniques apprises à la Gray Scott School (CINERI). Le même réseau de neurones cartographie\nl'occupation des sols — eau, cultures, forêt, bâti, mangroves — à partir d'images satellites\nlibres. La question d'ingénierie qui structure tout le projet : faire tourner ce code d'abord\nsur le ",[82,87,88],{},"CPU",", puis sur le ",[82,91,92],{},"GPU"," de la même machine, et comparer honnêtement les deux moteurs\nde calcul — leur architecture, la manière de les exploiter, leurs limites, et les résultats\n",[82,95,96],{},"mesurés",".",[99,100],"media-video",{"caption":101,"poster":102,"src":103},"SenLand en mouvement — de l'image satellite à la carte d'occupation des sols.","/projets/senland/poster.jpg","/projets/senland/senland-song.mp4",[73,105,107],{"id":106},"le-problème","Le problème",[78,109,110,111,114],{},"Savoir ",[82,112,113],{},"où"," se trouvent les cultures, l'eau, les forêts et les villes — et comment cela change\nd'une année à l'autre — est une question nationale : agriculture, ressource en eau, urbanisation,\nclimat. La cartographie manuelle ne passe pas à l'échelle d'un pays. Un réseau de neurones\napprend à lire les images satellites et produit la carte automatiquement, partout, à la même\nrésolution.",[73,116,118],{"id":117},"le-pipeline-de-bout-en-bout","Le pipeline, de bout en bout",[120,121],"sen-land-pipeline",{},[78,123,124,125,128,129,132,133,136,137,97],{},"Quatre étapes : on lit les ",[82,126,127],{},"données ouvertes"," (imagerie + labels), on les ",[82,130,131],{},"découpe"," en petits\npatches, un ",[82,134,135],{},"U-Net"," segmente chaque patch, et on recompose la ",[82,138,139],{},"carte d'occupation des sols",[73,141,143],{"id":142},"les-données-100-libres","Les données (100 % libres)",[78,145,146,147,150,151,154],{},"Imagerie ",[82,148,149],{},"Sentinel-2"," (cloudless, 10 m) alignée au pixel près avec les labels\n",[82,152,153],{},"ESA WorldCover"," (10 m). Quatre zones aux paysages volontairement très différents, lues en\ndirect depuis les serveurs publics — aucune donnée privée, aucun téléchargement massif.",[156,157],"fig-grid",{":cols":158,":images":159},"2","[{\"src\":\"/projets/senland/lac-de-guiers_preview.png\",\"caption\":\"Lac de Guiers — lac + vallée irriguée du fleuve : eau, cultures, zones humides\"},{\"src\":\"/projets/senland/dakar_preview.png\",\"caption\":\"Dakar — presqu'île : bâti dense, océan, sol nu\"},{\"src\":\"/projets/senland/casamance_preview.png\",\"caption\":\"Casamance — forêt, mangroves, rivières, cultures\"},{\"src\":\"/projets/senland/sine-saloum_preview.png\",\"caption\":\"Sine-Saloum — le delta et sa grande ceinture de mangroves\"}]",[73,161,163],{"id":162},"résultats-les-cartes","Résultats — les cartes",[78,165,166,167,169,170,173,174,177],{},"Pour chaque zone : l'image ",[82,168,149],{},", la ",[82,171,172],{},"vérité terrain"," (WorldCover) et la\n",[82,175,176],{},"prédiction"," du modèle, côte à côte. Le lac, l'océan et les grandes structures agricoles sont\nfidèlement reconstitués.",[78,179,180],{},[181,182],"img",{"alt":183,"src":184},"Lac de Guiers — Sentinel-2, vérité terrain, prédiction","/projets/senland/segmentation_lac-de-guiers.png",[78,186,187],{},[181,188],{"alt":189,"src":190},"Sine-Saloum — Sentinel-2, vérité terrain, prédiction","/projets/senland/segmentation_sine-saloum.png",[78,192,193],{},[181,194],{"alt":195,"src":196},"Casamance — Sentinel-2, vérité terrain, prédiction","/projets/senland/segmentation_casamance.png",[78,198,199],{},[181,200],{"alt":201,"src":202},"Dakar — Sentinel-2, vérité terrain, prédiction","/projets/senland/segmentation_dakar.png",[73,204,206],{"id":205},"métriques","Métriques",[78,208,209,210,213],{},"La segmentation est évaluée sur un ",[82,211,212],{},"découpage spatial"," (zone de validation tenue à l'écart,\npour une mesure honnête de la généralisation).",[215,216,217,233],"table",{},[218,219,220],"thead",{},[221,222,223,227,230],"tr",{},[224,225,226],"th",{},"Tâche",[224,228,229],{},"Métrique",[224,231,232],{},"Valeur",[234,235,236,250],"tbody",{},[221,237,238,242,245],{},[239,240,241],"td",{},"Classification (EuroSAT, 10 classes, from scratch)",[239,243,244],{},"accuracy validation",[239,246,247],{},[82,248,249],{},"91,8 %",[221,251,252,255,258],{},[239,253,254],{},"Segmentation (4 zones, découpage spatial)",[239,256,257],{},"mIoU",[239,259,260],{},[82,261,262],{},"0,62",[78,264,265,266,269,270,97],{},"En ajoutant le delta du Saloum au jeu d'entraînement, les mangroves passent de ",[82,267,268],{},"3 % à 83 %","\nd'IoU — la démonstration que ",[271,272,273],"em",{},"la bonne donnée vaut mieux qu'un modèle plus gros",[156,275],{":cols":158,":images":276},"[{\"src\":\"/projets/senland/seg_curves.png\",\"caption\":\"Apprentissage de la segmentation — mIoU & perte\"},{\"src\":\"/projets/senland/per_class_iou.png\",\"caption\":\"IoU par classe — l'eau et le bâti dominent, les mangroves suivent\"},{\"src\":\"/projets/senland/training_curves.png\",\"caption\":\"Échauffement classification (EuroSAT) — accuracy & perte\"},{\"src\":\"/projets/senland/confusion_matrix.png\",\"caption\":\"Matrice de confusion (classification)\"}]",[73,278,280],{"id":279},"larchitecture-un-seul-code-deux-moteurs","L'architecture — un seul code, deux moteurs",[78,282,283,284,286,287,290,291,294,295,298,299,303,304,307],{},"Le modèle est un ",[82,285,135],{}," (encodeur ResNet-34) pour la segmentation, précédé d'un ResNet-18\npour l'échauffement de classification, le tout en ",[82,288,289],{},"PyTorch",". Le cœur du projet reprend l'idée\nde ",[82,292,293],{},"Kokkos"," vue au Jour 4 : ",[271,296,297],{},"un seul code source, deux backends",". C'est exactement le même\ncode qui s'exécute sur le CPU ou sur le GPU — une couche d'introspection matérielle (",[300,301,302],"code",{},"hw.py",")\nchoisit le périphérique et le ",[82,305,306],{},"déclare honnêtement"," dans chaque figure, jamais un run CPU\nétiqueté « GPU ».",[309,310],"sen-land-engine",{},[78,312,313,314,317,318,321,322,325],{},"Sur CPU, le parallélisme passe par les ",[82,315,316],{},"threads intra-op OpenMP"," (Jour 1 / TBB) ; sur GPU, par\nle ",[82,319,320],{},"parallélisme massif SIMT"," des cœurs CUDA (Jour 2 / 3). Aucune ligne de science ne change :\nseul le ",[82,323,324],{},"débit d'itération"," change.",[73,327,329],{"id":328},"sur-cpu","Sur CPU",[78,331,332,333,336],{},"Pas de GPU requis : le même code exploite tous les cœurs via les threads OpenMP. Strong scaling\nmesuré sur le portable (Intel i5-10300H, 1 → 8 threads). L'efficacité retombe ",[82,334,335],{},"au-delà de 4\nthreads"," : la machine n'a que 4 cœurs physiques, l'HyperThreading n'aide pas le calcul dense.",[78,338,339],{},[181,340],{"alt":341,"src":342},"Scaling CPU multicœurs — débit & efficacité, 1 → 8 threads","/projets/senland/cpu_scaling.png",[344,345,346,361],"ul",{},[347,348,349,352,353,356,357,360],"li",{},[82,350,351],{},"Avantages"," — disponible partout (aucun matériel spécialisé) ; beaucoup de RAM, idéal pour\nl'I/O géo (lecture ",[300,354,355],{},"/vsicurl"," de Sentinel-2 + WorldCover) ; débogage simple et reproductible ;\nstrong scaling réel (",[82,358,359],{},"×2,2"," de 1 à 4 cœurs, 54 → 117 img/s).",[347,362,363,366],{},[82,364,365],{},"Limites"," — plafonne à 4 cœurs physiques (l'HyperThreading n'apporte rien : 117 → 109 img/s) ;\n≈ 4× plus lent que le GPU modeste de la même machine ; une époque en ~25 s contre ~5 s sur GPU.",[368,369,370],"blockquote",{},[78,371,372,373,376],{},"Mêmes poids, même qualité de modèle — uniquement plus lent. Le CPU produit exactement la\n",[82,374,375],{},"même science",", à un débit moindre.",[73,378,380],{"id":379},"sur-gpu","Sur GPU",[78,382,383,384,387,388,391],{},"Le GPU applique un ",[82,385,386],{},"parallélisme massif (SIMT)"," : des milliers de cœurs CUDA traitent le batch\nd'un coup. Sur la GTX 1650 du portable, le débit atteint ",[82,389,390],{},"466 img/s",", l'itération devient\nfluide — ce qui a rendu possibles les entraînements longs (120 époques de segmentation).",[344,393,394,407],{},[347,395,396,398,399,402,403,406],{},[82,397,351],{}," — ≈ ",[82,400,401],{},"×4"," plus rapide que le meilleur CPU, ",[82,404,405],{},"×8,6"," vs un seul cœur ; itération\nfluide (époque à 5,5 s) ; architecture taillée pour les convolutions denses — le SIMT colle au\nmodèle.",[347,408,409,411,412,415],{},[82,410,365],{}," — VRAM limitée (4 Go), qui contraint la taille de batch et de tuile ; la précision\nmixte (AMP fp16) ",[82,413,414],{},"diverge en NaN"," sur cette carte grand public — désactivée en local (une\nlimite honnête) ; surcoût de transfert hôte→device.",[368,417,418],{},[78,419,420,421,97],{},"Strictement le même modèle et la même précision finale que sur CPU — le GPU ne change pas le\nrésultat, il le délivre ~4× plus vite. Le gain est entièrement du ",[82,422,423],{},"temps d'ingénieur récupéré",[73,425,427],{"id":426},"face-à-face-débit-mesuré","Face-à-face — débit mesuré",[78,429,430,431,434],{},"Même problème, même code, trois moteurs de la même machine. Tout est ",[82,432,433],{},"mesuré ici",", sur le\nportable — rien n'est projeté.",[78,436,437],{},[181,438],{"alt":439,"src":440},"CPU 1 cœur · CPU multicœur · GPU — débit mesuré (échelle log)","/projets/senland/device_ladder.png",[73,442,444],{"id":443},"le-port-jax-comparer-les-frameworks-pas-seulement-les-moteurs","Le port JAX — comparer les frameworks, pas seulement les moteurs",[78,446,447,448,451,452,455,456,459,460,463,464,467,468,471,472,475,476,479,480,97],{},"Prolongement direct des ",[82,449,450],{},"Jours 5 et 7"," de l'école (Python sur CPU, puis sur GPU) : la même\ntâche de segmentation est ",[82,453,454],{},"réimplémentée en JAX/Flax"," (",[300,457,458],{},"src/senland_jax/",") pour comparer les\n",[271,461,462],{},"frameworks"," en plus des ",[271,465,466],{},"moteurs"," — mêmes zones du Sénégal, même métrique IoU. Le modèle est\nun U-Net ",[82,469,470],{},"from scratch"," (GroupNorm, 7,8 M paramètres, sans pré-entraînement ImageNet) ; le\npas d'entraînement est une ",[82,473,474],{},"fonction pure"," compilée par ",[300,477,478],{},"jax.jit"," et différentiée par\n",[300,481,482],{},"jax.value_and_grad",[215,484,485,500],{},[218,486,487],{},[221,488,489,492,495,497],{},[224,490,491],{},"Framework",[224,493,494],{},"Moteur",[224,496,257],{},[224,498,499],{},"Débit",[234,501,502,518,533],{},[221,503,504,510,513,515],{},[239,505,506,507],{},"PyTorch — U-Net ResNet-34, ",[82,508,509],{},"ImageNet",[239,511,512],{},"GPU GTX 1650",[239,514,262],{},[239,516,517],{},"470 patch/s",[221,519,520,525,527,530],{},[239,521,522,523],{},"JAX — U-Net GroupNorm, ",[82,524,470],{},[239,526,512],{},[239,528,529],{},"0,57",[239,531,532],{},"211 patch/s",[221,534,535,538,541,544],{},[239,536,537],{},"JAX — même modèle",[239,539,540],{},"CPU i5-10300H",[239,542,543],{},"—",[239,545,546],{},"13 patch/s",[78,548,549],{},"Lecture honnête de ces chiffres :",[344,551,552,562],{},[347,553,554,557,558,561],{},[82,555,556],{},"mIoU 0,57 vs 0,62"," — l'écart vient de l'encodeur ",[82,559,560],{},"pré-entraîné ImageNet"," côté PyTorch ;\nle modèle JAX apprend de zéro. Les IoU par classe restent très proches (eau permanente\n0,90 vs 0,91, mangroves 0,77 vs 0,78).",[347,563,564,565,568,569,572,573,576,577,97],{},"L'histoire « ",[82,566,567],{},"un code, deux moteurs"," » tient aussi en JAX : le même code jitté tourne\n",[82,570,571],{},"≈ ×16 plus vite sur GPU que sur CPU"," — ici via le placement de device (",[300,574,575],{},"JAX_PLATFORMS",")\nplutôt que ",[300,578,302],{},[580,581],"gs-bar-chart",{":categories":582,":series":583,"note":584,"title":585,"unit":586},"[\"GPU · GTX 1650\",\"CPU · i5-10300H\"]","[{\"name\":\"Débit\",\"values\":[211,13]}]","Même code JAX, placement du device via JAX_PLATFORMS — ≈ ×16 sur GPU.","JAX — le même code jitté, deux moteurs (patch/s)"," patch/s",[73,588,590],{"id":589},"le-benchmark-équitable-modèle-identique-dans-les-deux-frameworks","Le benchmark équitable — modèle identique dans les deux frameworks",[78,592,593,594,597,598,601,602,605,606,609,610,613],{},"Comparer un ResNet-34 pré-entraîné à un petit U-Net maison n'est pas une course équitable.\n",[300,595,596],{},"scripts/bench_unet.py"," construit donc le U-Net ",[82,599,600],{},"strictement identique"," (GroupNorm, 11\nclasses) dans les deux frameworks et chronomètre le ",[82,603,604],{},"pas d'entraînement complet"," (forward +\nCE+Dice + backward + AdamW) sur un batch résident en mémoire GPU — pour isoler le\n",[271,607,608],{},"framework/compilateur"," de l'",[271,611,612],{},"architecture",". GTX 1650, fp32 :",[215,615,616,630],{},[218,617,618],{},[221,619,620,623,627],{},[224,621,622],{},"Mode",[224,624,626],{"align":625},"right","batch 8",[224,628,629],{"align":625},"batch 16",[234,631,632,646,656,670],{},[221,633,634,641,644],{},[239,635,636,637,640],{},"JAX — naïf (",[300,638,639],{},"jit"," par pas)",[239,642,643],{"align":625},"246",[239,645,543],{"align":625},[221,647,648,651,654],{},[239,649,650],{},"PyTorch — eager",[239,652,653],{"align":625},"334",[239,655,543],{"align":625},[221,657,658,664,667],{},[239,659,660,661],{},"PyTorch — ",[300,662,663],{},"torch.compile",[239,665,666],{"align":625},"356",[239,668,669],{"align":625},"460",[221,671,672,681,686],{},[239,673,674],{},[82,675,676,677,680],{},"JAX — pas fusionnés (",[300,678,679],{},"lax.fori_loop",")",[239,682,683],{"align":625},[82,684,685],{},"371",[239,687,688],{"align":625},[82,689,690],{},"463",[78,692,693],{},[271,694,695],{},"(patch/s ; plus haut = mieux)",[580,697],{":categories":698,":series":699,"note":700,"title":701,"unit":586},"[\"JAX naïf (jit/pas)\",\"PyTorch eager\",\"torch.compile\",\"JAX fusionné (fori_loop)\"]","[{\"name\":\"Débit\",\"values\":[246,334,356,371]}]","U-Net GroupNorm identique dans les deux frameworks, pas d'entraînement complet, GTX 1650 fp32.","Modèle identique, batch 8 — le framework seul (patch/s)",[78,703,704],{},"Les enseignements :",[344,706,707,734],{},[347,708,709,710,713,714,716,717,720,721,455,724,726,727,733],{},"Le JAX ",[82,711,712],{},"naïf"," (un dispatch par pas) est le plus lent. Une fois ses vrais leviers activés —\n",[300,715,639],{},", ",[300,718,719],{},"donate_argnums"," (réutilisation des buffers), entrées résidentes sur le device, et\nsurtout la ",[82,722,723],{},"fusion des pas",[300,725,679],{}," : 20 pas pour le coût d'un dispatch) — JAX\n",[82,728,729,730,732],{},"dépasse ",[300,731,663],{}," à batch 8 (+4 %)"," et l'égale à batch 16.",[347,735,736,739,740,742],{},[82,737,738],{},"À modèle identique, JAX bien réglé ≈ PyTorch bien réglé"," sur cette carte. L'écart de ~2×\nobservé plus haut venait de l'",[271,741,612],{}," (ResNet-34 smp vs U-Net maison), pas du\nframework. L'avantage de XLA s'élargirait sur TPU, sur de plus gros batchs/modèles ou des\ngraphes plus fusionnables — rien qu'un GPU grand public de 4 Go ne sollicite.",[368,744,745],{},[78,746,747,748,751,752,755],{},"Piège de reproduction honnête : ",[300,749,750],{},"jax[cuda12]"," et PyTorch épinglent des versions différentes\nde ",[300,753,754],{},"nvidia-cudnn-cu12"," — dans un même venv, un seul des deux a le GPU à la fois. Utiliser\ndeux environnements séparés.",[73,757,759],{"id":758},"réalisé-avec-les-techniques-de-la-gray-scott-school","Réalisé avec les techniques de la Gray Scott School",[78,761,762,763,766],{},"Chaque brique d'ingénierie de SenLand reprend une technique vue à la Gray Scott School (CINERI)\net l'applique au deep learning. Le fil rouge — ",[271,764,765],{},"un seul code, CPU puis GPU"," — est l'idée même de\nKokkos.",[215,768,769,779],{},[218,770,771],{},[221,772,773,776],{},[224,774,775],{},"Brique",[224,777,778],{},"Jour de l'école",[234,780,781,795,809,817,825,833,841,849,857],{},[221,782,783,786],{},[239,784,785],{},"Un seul code, deux backends",[239,787,788,789,791,792,794],{},"Jour 4 · Kokkos → ici ",[300,790,302],{}," (PyTorch) et ",[300,793,575],{}," (JAX)",[221,796,797,800],{},[239,798,799],{},"Frameworks & compilateurs",[239,801,802,803,805,806,680],{},"Jours 5 & 7 · Python/JAX — ",[300,804,639],{},", XLA, fusion de pas (",[300,807,808],{},"fori_loop",[221,810,811,814],{},[239,812,813],{},"CPU multicœur",[239,815,816],{},"Jour 1 · parallélisme + Jour 2 · TBB — mémoire partagée, strong scaling",[221,818,819,822],{},[239,820,821],{},"GPU SIMT / CUDA",[239,823,824],{},"Jour 2 · GPU + Jour 3 · CUDA — parallélisme massif",[221,826,827,830],{},[239,828,829],{},"Benchmark & timing",[239,831,832],{},"Jour 2 · workload fixe, débit img/s",[221,834,835,838],{},[239,836,837],{},"Vectorisation / SIMD",[239,839,840],{},"Jour 1 + Jour 6 · EVE — analogue de la précision mixte (AMP)",[221,842,843,846],{},[239,844,845],{},"Précision flottante",[239,847,848],{},"Jour 3 · fp32/fp16 — explique le NaN AMP sur GTX 1650",[221,850,851,854],{},[239,852,853],{},"I/O & données",[239,855,856],{},"Jour 2 · HDF5 → ici géo I/O Sentinel-2 / WorldCover",[221,858,859,862],{},[239,860,861],{},"Conteneurs & repro",[239,863,864],{},"pixi / Apptainer — seeds fixes, expériences versionnées",[866,867],"hr",{},[78,869,870],{},[271,871,872],{},"SenLand est un projet ouvert et reproductible : chaque chiffre de cette page est adossé à une\nfigure committée dans le dépôt. Le code tourne sans GPU ; avec un GPU, tout va simplement ~4×\nplus vite.",{"title":874,"searchDepth":875,"depth":875,"links":876},"",2,[877,878,879,880,881,882,883,884,885,886,887,888,889],{"id":75,"depth":875,"text":76},{"id":106,"depth":875,"text":107},{"id":117,"depth":875,"text":118},{"id":142,"depth":875,"text":143},{"id":162,"depth":875,"text":163},{"id":205,"depth":875,"text":206},{"id":279,"depth":875,"text":280},{"id":328,"depth":875,"text":329},{"id":379,"depth":875,"text":380},{"id":426,"depth":875,"text":427},{"id":443,"depth":875,"text":444},{"id":589,"depth":875,"text":590},{"id":758,"depth":875,"text":759},"Cartographier l'occupation des sols du Sénégal par deep learning — le même code sur CPU et GPU, comparé honnêtement. Projet d'apprenant, réalisé avec les techniques de la Gray Scott School.","md",[893],{"label":894,"icon":895,"to":896,"target":897},"Code source","i-simple-icons-github","https://github.com/aniasse/senland","_blank",{"icon":899},"lucide:map",true,{"title":57,"description":890},"5R8UNJOwI4fcumyoIjXDWqCN5NOMs4gwhN88YnY8EW8",[904,906],{"title":51,"path":52,"stem":53,"description":905,"children":-1},"Les projets réalisés par les apprenants de la Gray Scott School, appliquant à des problèmes réels les techniques HPC apprises à la CINERI.",{"title":61,"path":62,"stem":63,"description":907,"children":-1},"La CINERI, le supercalculateur TAOUEY et la Gray Scott School — le calcul haute performance au service de la science, au Sénégal.",1783172494092]