From 210cff8e6fc1d3a0ead358690e5084fb93d96828 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 22 Aug 2026 19:45:04 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20fichier=20NOTICE=20+=20README=20=C3=A0?= =?UTF-8?q?=20jour=20pour=20un=20d=C3=A9p=C3=B4t=20public?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le dépôt vient de passer public. Trois manques que ça rend visibles. NOTICE (nouveau) — les trois modèles ONNX sont versionnés dans public/models/ (18,6 Mo) et redistribués sans leur attribution. Licences amont vérifiées à la source plutôt que citées de mémoire : EfficientNet-Lite4 int8 (ONNX Model Zoo, Apache-2.0, quantification Intel Neural Compressor), YOLOX-Nano (Megvii, Apache-2.0) et UltraFace RFB-320 (Linzaer, MIT). Le fichier couvre aussi ce qui est servi sans être versionné : Qwen3-0.6B-DQ-ONNX (Apache-2.0, récupéré au déploiement), les runtimes auto-hébergés qui sont donc redistribués (ONNX Runtime Web et DuckDB-Wasm en MIT, Transformers.js en Apache-2.0), les jeux de démo et la fixture e2e. Provenance des jeux de données retracée plutôt que supposée : titanic, iris et mpg viennent de seaborn-data (BSD-3-Clause) — le schéma de colonnes le prouve (class, who, adult_male, deck, embark_town, alive, alone sont des colonnes dérivées propres à seaborn) ; les six autres sont synthétiques, générés au seed 42, sans personne ni transaction réelle ; iris-field dérive d'iris. README — les compteurs annonçaient 314 tests unitaires et 57 e2e, la mesure du jour donne 352 et 61. Un chiffre faux sur la page d'accueil d'un dépôt public coûte plus cher que pas de chiffre. Ajouté aussi : DuckDB-Wasm et Transformers.js dans la pile (servis mais absents de la liste), le Cap 6 livré dans la feuille de route, npm run llm:prepare dans le tableau des scripts avec la raison — le modèle de 355 Mo n'est pas dans le dépôt et un nouveau clone doit savoir que tout marche sans lui — et le renvoi vers NOTICE depuis la section licence. package.json — champ license: MIT ajouté ; le fichier LICENSE existait, le champ manquait, et c'est lui que lisent les outils automatiques. Vérifié : format:check, lint (2 avertissements préexistants sur main dans badge.tsx et button.tsx), typecheck, build avec coquilles prérendues. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01UKw6oNC8iZ9Kn7q6x4qom4 --- NOTICE | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 19 +++++-- package.json | 1 + 3 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 NOTICE diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..67c6e29 --- /dev/null +++ b/NOTICE @@ -0,0 +1,136 @@ +LabML — third-party notices +Copyright (c) 2026 Dominic D'Apice + +LabML's own source code is released under the MIT License; see LICENSE. + +This file covers third-party material that LabML *redistributes* — model +weights committed to this repository or served from the deployed site, the +WebAssembly runtimes self-hosted beside them, and the demo datasets. Build +dependencies declared in package.json are not repeated here: they are not +redistributed by the site, and their licenses ship inside node_modules. + +Everything listed below runs in the visitor's browser. Nothing here sends data +anywhere; see the /privacy page for what does and does not cross the network. + +-------------------------------------------------------------------------------- +1. Machine learning models committed to this repository +-------------------------------------------------------------------------------- + +### EfficientNet-Lite4, INT8 quantized + File: public/models/efficientnet-lite4-11-int8.onnx + Source: ONNX Model Zoo — https://github.com/onnx/models + License: Apache License 2.0 + Upstream: EfficientNet-Lite (Google, TensorFlow), Apache License 2.0. + The INT8 variant in the Model Zoo is quantized with Intel(R) + Neural Compressor. + Used for: image classification over the 1,000 ImageNet-1k classes. + +### YOLOX-Nano + File: public/models/yolox-nano.onnx + Source: YOLOX — https://github.com/Megvii-BaseDetection/YOLOX + Copyright: Copyright (c) Megvii, Inc. and its affiliates. + License: Apache License 2.0 + Used for: object detection over the 80 COCO classes. + Note: chosen over the stronger AGPL-licensed YOLO families precisely + because Apache-2.0 permits this redistribution. + +### UltraFace RFB-320 + File: public/models/ultraface-RFB-320.onnx + Source: Ultra-Light-Fast-Generic-Face-Detector-1MB — + https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB + Copyright: Copyright (c) Linzaer + License: MIT License + Used for: face detection (location only — the model does not identify + anyone, and LabML stores no face data). + +The COCO and ImageNet-1k class-name lists bundled with the app (with French +translations added by this project) come from the respective model sources +above. + +-------------------------------------------------------------------------------- +2. Language model fetched at deploy time +-------------------------------------------------------------------------------- + +### Qwen3-0.6B-DQ (ONNX, q4f16) + Served at: /llm/onnx-community/Qwen3-0.6B-DQ-ONNX/** (355 MB) + Not committed to this repository. scripts/prepare-llm.mjs downloads the + weights during the build and splits them into <= 24 MiB parts, which the + browser reassembles; the generated manifest records the repository, + revision and license alongside the parts. + Source: https://huggingface.co/onnx-community/Qwen3-0.6B-DQ-ONNX + ONNX export of https://huggingface.co/Qwen/Qwen3-0.6B + Copyright: Copyright (c) Alibaba Cloud (Qwen team) + License: Apache License 2.0 + Used for: translating a question into a query. The model never computes + an answer — every number comes from the deterministic engine. + +-------------------------------------------------------------------------------- +3. Runtimes self-hosted and served by the site +-------------------------------------------------------------------------------- + +These are npm dependencies whose binaries are copied into the build and served +from this origin, because the strict Content-Security-Policy forbids the CDN +defaults. They are redistributed, so they are listed here. + +### ONNX Runtime Web + Served at: /ort/ and /ort-llm/ + Copyright: Copyright (c) Microsoft Corporation + License: MIT License + Home: https://github.com/microsoft/onnxruntime + +### DuckDB-Wasm (pinned to 1.28.0) + Served at: /duckdb/ + Copyright: Copyright (c) DuckDB Labs / Stichting DuckDB Foundation + License: MIT License + Home: https://github.com/duckdb/duckdb-wasm + Note: the version is pinned by measurement, not by habit — from 1.29 + the binaries cross Cloudflare Pages' hard 25 MiB per-file limit. + +### Transformers.js (@huggingface/transformers) + Bundled into the application JavaScript. + Copyright: Copyright (c) Hugging Face + License: Apache License 2.0 + Home: https://github.com/huggingface/transformers.js + +-------------------------------------------------------------------------------- +4. Demo datasets (public/datasets/) +-------------------------------------------------------------------------------- + +### Redistributed from seaborn-data + Files: titanic.csv, iris.csv, mpg.csv + Source: https://github.com/mwaskom/seaborn-data + Copyright: Copyright (c) Michael Waskom + License: BSD 3-Clause License (seaborn) + Underlying sources: + - Titanic passenger list — public domain; widely redistributed via the + Vanderbilt Department of Biostatistics dataset archive. + - Fisher's Iris (1936) — UCI Machine Learning Repository. + - Auto MPG — UCI Machine Learning Repository. + +### Synthetic, generated for this project + Files: cafe-sales.csv, cafe-sales-june.csv, cafe-products.csv, + energy.csv, fraud.csv, reviews.csv + Generated deterministically at seed 42 for demonstration purposes. They + contain no real people, transactions, reviews or measurements. Covered by + LabML's own MIT License. + +### Derived + File: iris-field.csv — a held-out batch derived from iris.csv, used to + demonstrate batch scoring. Same terms as its source. + +-------------------------------------------------------------------------------- +5. Test fixtures +-------------------------------------------------------------------------------- + + File: e2e/fixtures/astronaut.jpg + Source: NASA image GPN-2000-001177. NASA imagery is generally not + subject to copyright in the United States; see + https://www.nasa.gov/nasa-brand-center/images-and-media/ + Used for: an end-to-end assertion that detection finds one person and one + face on a real photograph. + +-------------------------------------------------------------------------------- + +Full license texts are available at the upstream links above. If you believe +something is attributed incorrectly or is missing from this file, please open +an issue — it will be corrected. diff --git a/README.md b/README.md index f380fc4..12521ba 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ The project follows three non-negotiable principles: - **Performance.** Every section serves a prerendered static shell (hero paints before JavaScript); Lighthouse mobile ≈ 0.99 on `/ml` under real throttling. Heavy dependencies (Dexie, SheetJS, ONNX Runtime) load lazily. -- **Quality bar.** 314 unit tests, 57 Playwright end-to-end tests (including offline PWA, +- **Quality bar.** 352 unit tests, 61 Playwright end-to-end tests (including offline PWA, fake-webcam and axe-core WCAG A/AA accessibility checks), strict TypeScript, ESLint, Prettier, and Lighthouse budgets — all enforced in CI. @@ -118,7 +118,8 @@ The project follows three non-negotiable principles: React 19 · TypeScript (strict) · Vite · Tailwind CSS v4 · react-router · zustand · i18next (bilingual EN/FR) · Dexie (IndexedDB) · Papa Parse · SheetJS · ONNX Runtime Web · -Vitest + Testing Library · Playwright · GitHub Actions · Cloudflare Pages +DuckDB-Wasm · Transformers.js · Vitest + Testing Library · Playwright · GitHub Actions · +Cloudflare Pages ## Getting started @@ -137,6 +138,13 @@ npm run dev # start the dev server | `npm run lint` / `npm run format:check` | ESLint / Prettier | | `npm run build` | Production build to `dist/` | | `npm run preview` | Serve the production build locally | +| `npm run llm:prepare` | Fetch and split the local LLM | + +The language model behind the data assistant is **not committed** (355 MB). `npm run +llm:prepare` downloads it into `public/llm/` and splits it into parts under Cloudflare's +25 MiB per-file limit; CI runs it before the production build. Skip it and everything +else works — the assistant simply falls back to its deterministic interpreter, which is +the default in any case. ## Deployment @@ -146,10 +154,13 @@ CI builds, tests and deploys on every push: pull requests get a Cloudflare Pages ## Roadmap -Development proceeds in planned "caps" of feature waves; five caps (MVP through model -reuse) have shipped. The full plan, delivery log and design decisions live in +Development proceeds in planned "caps" of feature waves; six caps have shipped (MVP +through the lab meeting the real world — real photos, real text, real file sizes). The full plan, delivery log and design decisions live in [PLAN.md](PLAN.md). ## License [MIT](LICENSE) © Dominic D'Apice + +Redistributed third-party material — the vision and language models, the self-hosted +WebAssembly runtimes, and the demo datasets — is attributed in [NOTICE](NOTICE). diff --git a/package.json b/package.json index 5e16da8..aea1af3 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "labml", "private": true, "version": "0.1.0", + "license": "MIT", "type": "module", "engines": { "node": ">=20"