diff --git a/pyproject.toml b/pyproject.toml index 48c6cc03..4902fabc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ dependencies = [ "mlflow>=2.21.2", "nltk>=3.9.1", "numpy>=2.2.4", + "omegaconf>=2.3.0", "pandas>=2.2.3", "pendulum>=3.0.0", "pyarrow>=19.0.1", diff --git a/setup.sh b/setup.sh index 626bfa0c..098804a4 100755 --- a/setup.sh +++ b/setup.sh @@ -12,8 +12,8 @@ unset AWS_SESSION_TOKEN export MLFLOW_S3_ENDPOINT_URL="https://$AWS_S3_ENDPOINT" export MLFLOW_TRACKING_URI=https://projet-ape-mlflow.user.lab.sspcloud.fr -export MLFLOW_MODEL_NAME=FastText-pytorch -export MLFLOW_MODEL_VERSION="2" +export MLFLOW_MODEL_NAME=test_wrapper_pytorch +export MLFLOW_MODEL_VERSION="10" export API_USERNAME=username export API_PASSWORD=password export AUTH_API=False diff --git a/src/api/data/libs.yaml b/src/api/data/libs.yaml deleted file mode 100644 index da53c441..00000000 --- a/src/api/data/libs.yaml +++ /dev/null @@ -1,880 +0,0 @@ -0111Y: Culture de céréales, à l’exception du riz, de légumineuses et de graines oléagineuses -0112Y: Culture du riz -0113Y: Culture de légumes, de melons, de racines et de tubercules -0114Y: Culture de la canne à sucre -0115Y: Culture du tabac -0116Y: Culture de plantes à fibres -0119Y: Autres cultures non permanentes -0121Y: Culture de la vigne -0122Y: Culture de fruits tropicaux et subtropicaux -0123Y: Culture d’agrumes -0124Y: Culture de fruits à pépins et à noyau -0125Y: Culture d’autres fruits d’arbres ou d’arbustes et de fruits à coque -0126Y: Culture de fruits oléagineux -0127Y: Culture de plantes à boissons -0128Y: Culture de plantes à épices, aromatiques, médicinales et pharmaceutiques -0129Y: Autres cultures permanentes -0130Y: Reproduction de plantes -0141Y: Élevage de vaches laitières -0142Y: Élevage d’autres bovins et de buffles -0143Y: Élevage de chevaux et d’autres équidés -0144Y: Élevage de chameaux et d’autres camélidés -0145Y: Élevage d’ovins et de caprins -0146Y: Élevage de porcins -0147Y: Élevage de volailles -0148G: Apiculture -0148H: Élevage d'autres animaux destinés à la consommation -0148J: Élevage d'animaux de compagnie et d'autres animaux n.c.a. -0150Y: Culture et élevage associés -0161Y: Activités de soutien aux cultures -0162Y: Activités de soutien à la production animale -0163Y: Traitement primaire des récoltes et traitement des semences -0170Y: Chasse, piégeage et activités de service connexes -0210Y: Sylviculture et autres activités forestières -0220Y: Exploitation forestière -0230Y: Récolte de produits forestiers non ligneux poussant à l’état sauvage -0240Y: Activités de soutien à l’exploitation forestière -0311Y: Pêche en mer -0312Y: Pêche en eau douce -0321Y: Aquaculture en mer -0322Y: Aquaculture en eau douce -0330Y: Activités de soutien à la pêche et l’aquaculture -0510Y: Extraction de houille -0520Y: Extraction de lignite -0610Y: Extraction de pétrole brut -0620Y: Extraction de gaz naturel -0710Y: Extraction de minerais de fer -0721Y: Extraction de minerais d’uranium et de thorium -0729Y: Extraction d’autres minerais de métaux non ferreux -0811Y: - Extraction de pierres ornementales, de calcaire industriel, de gypse, d’ardoise - et d’autres pierres -0812Y: Exploitation de gravières et sablières, extraction d’argiles et de kaolin -0891Y: Extraction de minéraux chimiques et d’engrais minéraux -0892Y: Extraction de tourbe -0893Y: Production de sel -0899Y: Autres activités extractives n.c.a. -0910Y: Activités de soutien à l’extraction d’hydrocarbures -0990Y: Activités de soutien aux autres industries extractives -1011Y: - Transformation et conservation de la viande, à l’exception de la viande de - volaille -1012Y: Transformation et conservation de la viande de volaille -1013G: Préparation industrielle de produits à base de viande -1013H: Préparation de produits à base de viande associée à leur vente au détail -1020Y: Transformation et conservation de poisson, de crustacés et de mollusques -1031Y: Transformation et conservation de pommes de terre -1032Y: Préparation de jus de fruits et légumes -1039G: Autre transformation et conservation de légumes -1039H: Autre transformation et conservation de fruits -1041Y: Fabrication d’huiles et graisses -1042Y: Fabrication de margarine et graisses comestibles similaires -1051G: Fabrication de lait liquide, crèmes de lait et laits fermentés -1051H: Fabrication de fromage -1051J: Fabrication de beurre et d'autres produits laitiers -1052Y: Fabrication de crèmes glacées et autres glaces alimentaires -1061G: Meunerie -1061H: Autres activités du travail des grains -1062Y: Fabrication de produits amylacés -1071G: Fabrication industrielle de pain et de pâtisserie fraîche -1071H: - Fabrication de pain et d'autres produits de boulangerie-pâtisserie associée - à leur vente au détail -1071J: Fabrication de pâtisserie fraîche associée à sa vente au détail -1072Y: Fabrication de biscuits, biscottes et pâtisseries de conservation -1073Y: Fabrication de pâtes alimentaires -1081Y: Fabrication de sucre -1082Y: Fabrication de cacao, de chocolat et de produits de confiserie -1083Y: Transformation du thé et du café -1084Y: Fabrication de condiments et assaisonnements -1085Y: Fabrication de plats préparés -1086Y: Fabrication d’aliments homogénéisés et diététiques -1089Y: Fabrication d’autres produits alimentaires n.c.a. -1091Y: Fabrication d’aliments pour animaux de ferme -1092Y: Fabrication d’aliments pour animaux de compagnie -1101Y: Production de boissons alcoolisées distillées -1102G: Fabrication de vins effervescents -1102H: Fabrication de vins non effervescents -1103Y: Fabrication de cidre et autres boissons fermentées à base de fruits -1104Y: Production d’autres boissons fermentées non distillées -1105Y: Fabrication de bière -1106Y: Fabrication de malt -1107G: Industrie des eaux de table -1107H: Production d'autres boissons non alcoolisées -1200Y: Fabrication de produits à base de tabac -1310Y: Préparation de fibres textiles et filature -1320Y: Tissage -1330Y: Ennoblissement textile -1391Y: Fabrication d’étoffes à mailles -1392Y: Fabrication de textiles ménagers et d’articles d’ameublement confectionnés -1393Y: Fabrication de tapis et moquettes -1394Y: Fabrication de ficelles, cordes et filets -1395Y: Fabrication de textiles non-tissés et articles non-tissés -1396Y: Fabrication d’autres textiles techniques et industriels -1399Y: Fabrication d’autres textiles n.c.a. -1410Y: Fabrication d’articles à mailles -1421Y: Fabrication de vêtements de dessus -1422Y: Fabrication de vêtements de dessous -1423Y: Fabrication de vêtements de travail -1424Y: Fabrication de vêtements en cuir et en fourrure -1429Y: Fabrication d’autres articles d’habillement et accessoires n.c.a. -1511Y: Tannage, apprêt et teinture des cuirs et des fourrures -1512Y: - Fabrication de bagages, de maroquinerie, sellerie et bourrellerie, en toutes - matières -1520Y: Fabrication de chaussures -1611Y: Sciage et rabotage du bois -1612Y: Façonnage et finition du bois -1621Y: Fabrication de placage et de panneaux de bois -1622Y: Fabrication de parquets assemblés -1623Y: Fabrication de charpentes et d’autres menuiseries -1624Y: Fabrication d’emballages en bois -1625Y: Fabrication de portes et fenêtres en bois -1626Y: Fabrication de combustibles solides à partir de biomasse végétale -1627Y: Finition de produits en bois -1628Y: Fabrication d’objets divers en bois, d’objets en liège, vannerie et sparterie -1711Y: Fabrication de pâte à papier -1712Y: Fabrication de papier et de carton -1721Y: Fabrication de papier et carton ondulés et d’emballages en papier ou en carton -1722Y: Fabrication d’articles en papier à usage sanitaire ou domestique -1723Y: Fabrication d’articles de papeterie -1724Y: Fabrication de papiers peints -1725Y: Fabrication d’autres articles en papier ou en carton -1811Y: Imprimerie de journaux -1812Y: Autres activités d’imprimerie -1813Y: Activités de pré-presse -1814Y: Reliure et activités connexes -1820Y: Reproduction d’enregistrements -1910Y: Cokéfaction -1920Y: Raffinage du pétrole et fabrication de produits à base de combustibles fossiles -2011Y: Fabrication de gaz industriels -2012Y: Fabrication de colorants et de pigments -2013Y: Fabrication d’autres produits chimiques inorganiques de base -2014Y: Fabrication d’autres produits chimiques organiques de base -2015Y: Fabrication de produits azotés et d’engrais -2016Y: Fabrication de matières plastiques de base -2017Y: Fabrication de caoutchouc synthétique -2020Y: Fabrication de pesticides, de désinfectants et d’autres produits agrochimiques -2030Y: Fabrication de peintures, vernis, encres et mastics -2041Y: Fabrication de savons, détergents et produits d’entretien -2042Y: Fabrication de parfums et de produits pour la toilette -2051Y: Fabrication de biocarburants liquides -2059Y: Fabrication d’autres produits chimiques n.c.a. -2060Y: Fabrication de fibres artificielles ou synthétiques -2110Y: Fabrication de produits pharmaceutiques de base -2120Y: Fabrication de préparations pharmaceutiques -2211Y: - Fabrication et rechapage de pneus en caoutchouc et fabrication de chambres - à air -2212Y: Fabrication d’autres articles en caoutchouc -2221Y: Fabrication de plaques, feuilles, tubes et profilés en matières plastiques -2222Y: Fabrication d’emballages en matières plastiques -2223Y: Fabrication de portes et fenêtres en matières plastiques -2224Y: Fabrication d’éléments en matières plastiques pour la construction -2225Y: Façonnage et finition de produits en matières plastiques -2226Y: Fabrication d’autres articles en matières plastiques -2311Y: Fabrication de verre plat -2312Y: Façonnage et transformation du verre plat -2313Y: Fabrication de verre creux -2314Y: Fabrication de fibres de verre -2315Y: Fabrication et façonnage d’autres articles en verre, y compris verre technique -2320Y: Fabrication de produits réfractaires -2331Y: Fabrication de carreaux en céramique -2332Y: Fabrication de briques, tuiles et produits de construction, en terre cuite -2341Y: Fabrication d’articles céramiques à usage domestique ou ornemental -2342Y: Fabrication d’appareils sanitaires en céramique -2343Y: Fabrication d’isolateurs et pièces isolantes en céramique -2344Y: Fabrication d’autres produits céramiques à usage technique -2345Y: Fabrication d’autres produits céramiques -2351Y: Fabrication de ciment -2352Y: Fabrication de chaux et plâtre -2361Y: Fabrication d’éléments en béton pour la construction -2362Y: Fabrication d’éléments en plâtre pour la construction -2363Y: Fabrication de béton prêt à l’emploi -2364Y: Fabrication de mortiers et de bétons secs -2365Y: Fabrication d’ouvrages en fibre-ciment -2366Y: Fabrication d’autres ouvrages en béton, en ciment ou en plâtre -2370Y: Taille, façonnage et finissage de pierres -2391Y: Fabrication de produits abrasifs -2399Y: Fabrication d’autres produits minéraux non métalliques n.c.a. -2410Y: Sidérurgie -2420Y: - Fabrication de tubes, tuyaux, profilés creux et accessoires correspondants - en acier -2431Y: Étirage à froid de barres -2432Y: Laminage à froid de feuillards -2433Y: Profilage à froid par formage ou pliage -2434Y: Tréfilage à froid -2441Y: Production de métaux précieux -2442Y: Métallurgie de l’aluminium -2443Y: Métallurgie du plomb, du zinc ou de l’étain -2444Y: Métallurgie du cuivre -2445Y: Métallurgie des autres métaux non ferreux -2446Y: Élaboration et transformation de matières nucléaires -2451Y: Fonderie de fonte -2452Y: Fonderie d’acier -2453Y: Fonderie de métaux légers -2454Y: Fonderie d’autres métaux non ferreux -2511Y: Fabrication de structures métalliques et de parties de structures -2512Y: Fabrication de portes et fenêtres en métal -2521Y: Fabrication de radiateurs et de chaudières pour le chauffage central -2522Y: Fabrication d’autres réservoirs, citernes et conteneurs métalliques -2530Y: Fabrication d’armes et de munitions -2540Y: Forgeage et façonnage de métal ; métallurgie des poudres -2551Y: Revêtement des métaux -2552Y: Traitement thermique des métaux -2553Y: Usinage des métaux -2561Y: Fabrication de coutellerie -2562Y: Fabrication de serrures et de ferrures -2563Y: Fabrication d’outillage -2591Y: Fabrication de fûts et emballages métalliques similaires -2592Y: Fabrication d’emballages métalliques légers -2593Y: Fabrication d’articles en fils métalliques, de chaînes et de ressorts -2594Y: Fabrication de vis et de boulons -2599Y: Fabrication d’autres produits métalliques n.c.a. -2611Y: Fabrication de composants électroniques -2612Y: Fabrication de cartes électroniques assemblées -2620Y: Fabrication d’ordinateurs et d’équipements périphériques -2630Y: Fabrication d’équipements de communication -2640Y: Fabrication de produits électroniques grand public -2651Y: Fabrication d’instruments et d’appareils de mesure, d’essai et de navigation -2652Y: Horlogerie -2660Y: - Fabrication d’équipements d’irradiation médicale, d’équipements électromédicaux - et électrothérapeutiques -2670Y: - Fabrication de matériels optique et photographique et de supports magnétiques - et optiques -2711Y: Fabrication de moteurs, génératrices et transformateurs électriques -2712Y: Fabrication de matériel de distribution et de commande électrique -2720Y: Fabrication de piles et d’accumulateurs électriques -2731Y: Fabrication de câbles de fibres optiques -2732Y: Fabrication d’autres fils et câbles électroniques ou électriques -2733Y: Fabrication de matériel d’installation électrique -2740Y: Fabrication d’appareils d’éclairage -2751Y: Fabrication d’appareils électroménagers -2752Y: Fabrication d’appareils ménagers non électriques -2790Y: Fabrication d’autres matériels électriques -2811Y: - Fabrication de moteurs et turbines, à l’exception des moteurs d’avions et de - véhicules -2812Y: Fabrication d’équipements de transmission de puissance hydrauliques et pneumatiques -2813G: Fabrication d'autres pompes -2813H: Fabrication d'autres compresseurs -2814Y: Fabrication d’autres articles de robinetterie -2815Y: Fabrication de roulements et de transmissions mécaniques -2821Y: Fabrication de fours et brûleurs et d’équipements fixes de chauffage domestique -2822Y: Fabrication de matériel de levage et de manutention -2823Y: - Fabrication de machines et d’équipements de bureau (à l’exception des ordinateurs - et équipements périphériques) -2824Y: Fabrication d’outillage portatif à moteur incorporé -2825Y: Fabrication d’équipements aérauliques et frigorifiques industriels -2829Y: Fabrication de machines diverses d’usage général -2830Y: Fabrication de machines agricoles et forestières -2841Y: Fabrication de machines-outils pour le formage et le travail des métaux -2842Y: Fabrication d’autres machines-outils -2891Y: Fabrication de machines pour la métallurgie -2892Y: Fabrication de machines pour l’extraction ou la construction -2893Y: Fabrication de machines pour l’industrie agro-alimentaire -2894Y: Fabrication de machines pour les industries textiles et du cuir -2895Y: Fabrication de machines pour les industries du papier et du carton -2896Y: Fabrication de machines pour le travail du caoutchouc ou des plastiques -2897Y: Fabrication de machines de fabrication additive -2899Y: Fabrication d’autres machines d’usage spécifique n.c.a. -2910Y: Construction de véhicules automobiles -2920Y: - Fabrication de carrosseries de véhicules automobiles ; fabrication de remorques - et de semi-remorques -2931Y: Fabrication d’équipements électriques et électroniques automobiles -2932Y: Fabrication d’autres équipements automobiles -3011Y: Construction de navires et de structures flottantes civiles -3012Y: Construction de bateaux de plaisance -3013Y: Construction de bateaux et navires militaires -3020Y: Construction de locomotives et d’autre matériel ferroviaire roulant -3031Y: Construction aéronautique et spatiale civile -3032Y: Construction aéronautique et spatiale militaire -3040Y: Construction de véhicules militaires de combat -3091Y: Fabrication de motocycles -3092Y: Fabrication de bicyclettes et de véhicules pour invalides -3099Y: Fabrication d’autres équipements de transport n.c.a. -3100G: Fabrication de meubles à destination de professionnels -3100H: Fabrication de meubles de cuisine et salle de bain -3100J: Fabrication d'autres meubles domestiques, de sommiers et de matelas -3211Y: Frappe de monnaie -3212Y: Fabrication d’articles de joaillerie et bijouterie -3213Y: Fabrication d’articles de bijouterie fantaisie et articles similaires -3220Y: Fabrication d’instruments de musique -3230Y: Fabrication d’articles de sport -3240Y: Fabrication de jeux et jouets -3250Y: Fabrication d’instruments et de fournitures à usage médical et dentaire -3291Y: Fabrication d’articles de brosserie -3299Y: Autres activités manufacturières n.c.a. -3311Y: Réparation et entretien d’ouvrages en métaux -3312Y: Réparation et entretien de machines -3313Y: Réparation et entretien de matériels électroniques et optiques -3314Y: Réparation et entretien d’équipements électriques -3315Y: Réparation et entretien de bateaux et navires civils -3316Y: Réparation et entretien d’aéronefs et d’engins spatiaux civils -3317Y: Réparation et entretien d’autres équipements de transport civils -3318G: Réparation et entretien d’aéronefs et d’engins spatiaux militaires -3318H: Réparation et entretien de véhicules de combat, de navires et de bateaux militaires -3319Y: Réparation et entretien d’autres équipements -3320Y: Installation de machines et d’équipements industriels -3511Y: Production d’électricité à partir de sources non renouvelables -3512Y: Production d’électricité à partir de sources renouvelables -3513Y: Transport d’électricité -3514Y: Distribution d’électricité -3515G: Exploitation d'installations de recharge pour véhicules électriques -3515H: Autre commerce d’électricité -3516Y: Stockage de l’électricité -3521Y: Production de gaz -3522Y: Distribution de combustibles gazeux par conduites -3523Y: Commerce de combustibles gazeux par conduites -3524Y: Stockage de gaz dans le cadre de services d’approvisionnement en réseau -3530Y: Production et distribution de vapeur et d’air conditionné -3540Y: Activités des courtiers et agents pour l’électricité et le gaz naturel -3600Y: Captage, traitement et distribution d’eau -3700Y: Collecte et traitement des eaux usées -3811Y: Collecte des déchets non dangereux -3812Y: Collecte des déchets dangereux -3821Y: Récupération de matériaux -3822Y: Valorisation énergétique -3823Y: Autre valorisation des déchets -3831Y: Incinération sans récupération d’énergie -3832Y: Mise en décharge ou stockage permanent -3833Y: Autre élimination des déchets -3900Y: Activités de dépollution et autres activités de service de gestion des déchets -4100G: Construction de maisons individuelles -4100H: Construction d'autres bâtiments -4211Y: Construction de routes et autoroutes -4212Y: Construction de voies ferrées de surface et souterraines -4213G: Construction de ponts et de viaducs -4213H: Construction de tunnels -4221Y: Construction de réseaux pour fluides -4222Y: Construction de réseaux électriques et de télécommunications -4291Y: Construction d’ouvrages maritimes et fluviaux -4299Y: Construction d’autres ouvrages de génie civil n.c.a. -4311Y: Démolition -4312G: Travaux de terrassement courants et travaux préparatoires -4312H: Travaux de terrassement spécialisés ou de grande masse -4313Y: Forages et sondages -4321G: Travaux d'installation électrique dans tous locaux -4321H: Travaux d'installation électrique sur la voie -4322G: Travaux d'installation d'eau et de gaz en tous locaux -4322H: Travaux d'installation d'équipements thermiques et de climatisation -4323Y: Mise en place de l’isolation -4324Y: Autres travaux d’installation -4331Y: Travaux de plâtrerie -4332G: Travaux de menuiserie bois et PVC -4332H: Travaux de menuiserie métallique -4333Y: Travaux de revêtement des sols et des murs -4334G: Travaux de peinture -4334H: Travaux de vitrerie -4335Y: Autres travaux de finition -4341G: Travaux de charpente -4341H: Travaux de couverture par éléments -4341J: Travaux d'étanchéification pour la toiture -4342G: - Travaux de montage d’éléments de construction préfabriqués pour bâtiments, - en acier -4342H: - Travaux de montage d’éléments de construction préfabriqués pour bâtiments, - en bois -4342J: - Autres travaux de construction spécialisés dans la construction de bâtiments - n.c.a. -4350Y: Travaux de construction spécialisés en génie civil -4360Y: Activités de service d’intermédiation pour des travaux de construction spécialisés -4391Y: Travaux de maçonnerie et de pose de briques -4399G: Location avec opérateur d’équipement de construction -4399H: Tous les autres travaux de construction spécialisés n.c.a. -4611Y: - Activités d’intermédiaire du commerce de gros en matières premières agricoles, - animaux vivants, matières premières textiles et produits semi-finis -4612Y: - Activités d’intermédiaire du commerce de gros en combustibles, minerais, métaux - et produits chimiques -4613Y: Activités d’intermédiaire du commerce de gros en bois et matériaux de construction -4614Y: - Activités d’intermédiaire du commerce de gros en machines, équipements industriels, - navires et avions -4615Y: - Activités d’intermédiaire du commerce de gros en meubles, biens domestiques - et quincaillerie -4616Y: - Activités d’intermédiaire du commerce de gros en textiles, habillement, fourrures, - chaussures et articles en cuir -4617G: Activités d’intermédiation des centrales d’achat alimentaires -4617H: - Autres activités d'intermédiaire du commerce de gros en denrées, boissons et - tabac -4618Y: - Activités d’intermédiaire spécialisé dans le commerce de gros d’autres produits - spécifiques -4619G: Activités d’intermédiation des centrales d’achat non spécialisées -4619H: Autres activités d'intermédiaire non spécialisé du commerce de gros -4621Y: - Commerce de gros de céréales, de tabac non manufacturé, de semences et d’aliments - pour animaux -4622Y: Commerce de gros de fleurs et de plantes -4623Y: Commerce de gros d’animaux vivants -4624Y: Commerce de gros de cuirs et de peaux -4631Y: Commerce de gros de fruits et légumes -4632G: Commerce de gros de viandes et de produits à base de viande -4632H: - Commerce de gros de poissons, crustacés et mollusques et de produits à base - de poisson -4633Y: Commerce de gros de produits laitiers, œufs, huiles et matières grasses comestibles -4634Y: Commerce de gros de boissons -4635Y: Commerce de gros de produits à base de tabac -4636Y: Commerce de gros de sucre, chocolat et confiserie -4637Y: Commerce de gros de café, thé, cacao et épices -4638Y: Commerce de gros d’autres denrées alimentaires -4639Y: Commerce de gros non spécialisé de denrées, boissons et tabac -4641Y: Commerce de gros de textiles -4642Y: Commerce de gros d’habillement et de chaussures -4643G: Commerce de gros d’appareils de génie climatique -4643H: Commerce de gros d’autres appareils électroménagers -4644Y: Commerce de gros de vaisselle, verrerie et produits d’entretien -4645Y: Commerce de gros de parfumerie et de produits de beauté -4646Y: Commerce de gros de produits pharmaceutiques et médicaux -4647Y: - Commerce de gros de meubles à usage domestique, de bureau et de magasin, de - tapis et d’appareils d’éclairage -4648Y: Commerce de gros d’articles d’horlogerie et de bijouterie -4649Y: Commerce de gros d’autres biens domestiques -4650Y: Commerce de gros d’équipements de l’information et de la communication -4661Y: Commerce de gros de matériel agricole -4662Y: Commerce de gros de machines-outils -4663Y: - Commerce de gros de machines pour l’extraction, la construction et le génie - civil -4664G: Commerce de gros d’autre matériel électrique -4664H: Commerce de gros de matériels de manutention et de levage -4664J: Commerce de gros d’autres machines et équipements pour l’industrie et le transport -4664K: Commerce de gros d’autres machines et équipements pour le commerce et les services -4671G: Commerce de gros de véhicules automobiles légers (moins de 3,5 tonnes) -4671H: Commerce de gros d’autres véhicules automobiles -4672Y: Commerce de gros de pièces et accessoires de véhicules automobiles -4673Y: Commerce de gros de motocycles et de pièces et accessoires pour motocycles -4681Y: - Commerce de gros de combustibles solides, liquides et gazeux et de produits - annexes -4682Y: Commerce de gros de minerais et de métaux -4683G: Commerce de gros de bois et matériaux de construction -4683H: Commerce de gros d’appareils sanitaires -4683J: Commerce de gros de matériaux de décoration -4684G: Commerce de gros de quincaillerie et de matériel de bricolage -4684H: Commerce de gros de fournitures pour plomberie et chauffage -4685Y: Commerce de gros de produits chimiques -4686Y: Commerce de gros d’autres produits intermédiaires -4687Y: Commerce de gros de déchets et débris -4690Y: Commerce de gros non spécialisé -4711G: - Commerce de détail non spécialisé à prédominance alimentaire en magasin de - moins de 120 m² -4711H: - Commerce de détail non spécialisé à prédominance alimentaire en magasin de - 120 à 400 m² (supérette) -4711J: - Commerce de détail non spécialisé à prédominance alimentaire en magasin de - 400 à 2500 m² (supermarché) -4711K: - Commerce de détail non spécialisé à prédominance alimentaire en magasin de - plus de 2500 m² (hypermarché) -4711L: Commerce de détail non spécialisé à prédominance alimentaire hors magasin -4712G: - Autre commerce de détail non spécialisé en magasin de plus de 2500 m² (grand - magasin) -4712H: - Autre commerce de détail non spécialisé en magasin de moins de 2500 m² ou hors - magasin -4721Y: Commerce de détail de fruits et légumes -4722Y: Commerce de détail de viande et de produits à base de viande -4723Y: Commerce de détail de poisson, de crustacés et de mollusques -4724Y: Commerce de détail de pain, de pâtisserie et de confiserie -4725Y: Commerce de détail de boissons -4726Y: Commerce de détail de produits à base de tabac -4727G: Commerce de détail de produits laitiers et d'œufs -4727H: - Commerce de détail spécialisé d’autres produits d’épicerie et d’autres produits - alimentaires n.c.a. -4730Y: Commerce de détail de carburants -4740Y: Commerce de détail d’équipements de l’information et de la communication -4751Y: Commerce de détail de textiles -4752G: - Commerce de détail de quincaillerie, de matériaux de construction et de bricolage, - de peinture et de verre en magasin de moins de 400 m² -4752H: - Commerce de détail de quincaillerie, de matériaux de construction et de bricolage, - de peinture et de verre en magasin de plus de 400 m² ou hors magasin -4753Y: Commerce de détail de tapis, moquettes et revêtements de murs et de sols -4754Y: Commerce de détail d’appareils électroménagers -4755G: Commerce de détail de meubles -4755H: - Commerce de détail d'appareils d’éclairage, de vaisselle et d’autres équipements - du foyer -4761Y: Commerce de détail de livres -4762Y: Commerce de détail de journaux et autres publications périodiques et de papeterie -4763Y: Commerce de détail d’articles de sport -4764Y: Commerce de détail de jeux et jouets -4769Y: Commerce de détail de biens culturels et de loisirs n.c.a. -4771Y: Commerce de détail d’habillement -4772G: Commerce de détail de chaussures -4772H: Commerce de détail de maroquinerie et d'articles de voyage -4773Y: Commerce de détail de produits pharmaceutiques -4774G: Commerce de détail d'optique -4774H: Commerce de détail d’autres articles médicaux et orthopédiques -4775Y: Commerce de détail de parfumerie et de produits de beauté -4776Y: - Commerce de détail de fleurs, plantes, engrais, animaux de compagnie et aliments - pour ces animaux -4777Y: Commerce de détail d’articles d’horlogerie et de bijouterie -4778G: Commerce de détail de charbons et combustibles -4778H: Commerce de détail spécialisé d’autres biens neufs n.c.a. -4779G: Commerce de détail d’antiquités et livres anciens -4779H: Commerce de détail d’autres biens d’occasion -4781Y: Commerce de détail de véhicules automobiles -4782Y: Commerce de détail de pièces et accessoires de véhicules automobiles -4783Y: Commerce de détail de motocycles et de pièces et accessoires de motocycles -4791Y: Activités de service d’intermédiation pour le commerce de détail non spécialisé -4792G: - Activités de service d’intermédiation pour le commerce de détail de véhicules - automobiles -4792H: - Activités de service d’intermédiation pour le commerce de détail de journaux - et de produits à base de tabac -4792J: - Activités de service d'intermédiation pour le commerce de détail spécialisé - d’autres biens -4911Y: Transport ferroviaire lourd de voyageurs -4912Y: Autre transport ferroviaire de voyageurs -4920Y: Transport ferroviaire de fret -4931G: Transport régulier urbain et suburbain de voyageurs par route -4931H: Autre transport régulier de voyageurs par route -4932Y: Transport non régulier de voyageurs par route -4933G: Transport de personnes par taxi -4933H: Autre transport de personnes sur demande par véhicule avec chauffeur -4934Y: Transport de voyageurs par téléphériques et remontées mécaniques -4939Y: Autre transport terrestre de voyageurs n.c.a. -4941G: Transport routier de fret longue distance -4941H: Transport routier de fret régional et de proximité -4941J: Location de camions avec chauffeur -4942Y: Services de déménagement -4950Y: Transport par conduites -5010Y: Transports maritimes et côtiers de passagers -5020Y: Transports maritimes et côtiers de fret -5030Y: Transports fluviaux de passagers -5040Y: Transports fluviaux de fret -5110Y: Transports aériens de passagers -5121Y: Transports aériens de fret -5122Y: Transports spatiaux -5210G: Entreposage et stockage frigorifique -5210H: Entreposage et stockage non frigorifique -5221Y: Services auxiliaires des transports terrestres -5222Y: Services auxiliaires des transports par eau -5223Y: Services auxiliaires des transports aériens -5224G: Manutention portuaire -5224H: Manutention non portuaire -5225Y: Activités de service logistique -5226Y: Autres activités de soutien pour les transports -5231Y: Activités de service d’intermédiation pour le transport de fret -5232Y: Activités de service d’intermédiation pour le transport de passagers -5310Y: Activités de poste dans le cadre d’une obligation de service universel -5320G: Livraison de colis -5320H: Livraison à domicile de repas et autres activités de poste et de courrier n.c.a. -5330Y: Activités de service d’intermédiation pour des activités de poste et de courrier -5510Y: Hôtels et hébergement similaire -5520Y: Hébergement touristique et autre hébergement de courte durée -5530Y: Terrains de camping et parcs pour caravanes ou véhicules de loisirs -5540Y: Activités de service d’intermédiation pour l’hébergement -5590Y: Autres hébergements -5611G: Restauration traditionnelle -5611H: Cafétérias et autres libres services -5611J: Restauration de type rapide -5612Y: Activités de service de restauration mobile -5621Y: Activités de traiteur événementiel -5622Y: - Activités de service contractuel de restauration et autres activités de service - de restauration -5630Y: Activités de débit de boissons -5640Y: Activités de service d’intermédiation pour des activités de service de restauration -5811Y: Édition de livres -5812Y: Édition de journaux -5813Y: Édition de revues et de périodiques -5819Y: Autres activités d’édition, à l’exception de l’édition de logiciels -5821Y: Édition de jeux vidéo -5829Y: Édition d’autres logiciels -5911G: Production de films et programmes audiovisuels -5911H: Production de films institutionnels et publicitaires -5911J: Production de films pour le cinéma -5911K: Production de films et programmes d'animation -5912Y: - Post-production de films cinématographiques, de vidéos et de programmes de - télévision -5913Y: Distribution de films cinématographiques et de vidéos -5914Y: Projection de films cinématographiques -5920Y: Enregistrement sonore et édition musicale -6010Y: Radiodiffusion et activités de distribution de contenu audio -6020G: Programmation de télévision et télédiffusion -6020H: Édition de services de médias à la demande -6031Y: Activités d’agence de presse -6039Y: Autres activités de distribution de contenu -6110Y: Activités de télécommunications filaires, sans fil et satellitaires -6120Y: - Activités de revente de télécommunications et activités de service d’intermédiation - pour les télécommunications -6190Y: Autres activités de télécommunications -6210Y: Activités de programmation informatique -6220G: Conseil en systèmes et logiciels informatiques -6220H: - Gestion d'installations informatiques et maintenance de systèmes et d’applications - informatiques -6290Y: Autres activités de service informatique -6310Y: - Infrastructure informatique, traitement de données, hébergement et activités - connexes -6391Y: Activités de portail de recherche sur le web -6392Y: Autres activités de service d’information -6411Y: Activités de banque centrale -6419Y: Autre intermédiation monétaire -6421Y: Activités de société holding -6422Y: Activités de conduit de financement -6431Y: Activités de fonds d’investissement sur le marché monétaire ou non monétaire -6432Y: Activités de fiducie, comptes de patrimoine et d’agence -6491Y: Crédit-bail -6492Y: Autre distribution de crédit -6499Y: - Autres activités des services financiers, hors assurance et fonds de pension, - n.c.a. -6511Y: Assurance vie -6512Y: Assurances non-vie -6520Y: Réassurance -6530Y: Fonds de pension -6611Y: Administration de marchés financiers -6612Y: Courtage de valeurs mobilières et de matières premières -6619G: Activités des unités non productives détentrices de patrimoine mobilier -6619H: - Autres activités auxiliaires de services financiers, hors assurance et caisses - de retraite, n.c.a. -6621Y: Évaluation des risques et dommages -6622Y: Activités des agents et courtiers d’assurances -6629Y: Activités auxiliaires d’assurance et de fonds de pension n.c.a. -6630Y: Activités de gestion de fonds -6811Y: Achat et vente de biens propres -6812Y: Promotion immobilière -6820G: Location de logements -6820H: Location et exploitation d'autres biens immobiliers propres ou loués -6831Y: Activités de service d’intermédiation pour les activités immobilières -6832G: Activités des unités non productives détentrices de patrimoine immobilier -6832H: Autres activités immobilières pour compte de tiers n.c.a. -6910Y: Activités juridiques -6920Y: Activités de comptabilité, de tenue de comptes et d’audit ; conseil fiscal -7010Y: Activités des sièges sociaux -7020Y: Activités de conseil pour les affaires et autre conseil de gestion -7111Y: Activités d’architecture -7112Y: Activités d’ingénierie et de conseil technique connexe -7120G: Contrôle technique des véhicules -7120H: Analyses, essais et inspections techniques -7210G: Recherche et développement en biotechnologies -7210H: Recherche et développement en autres sciences physiques et naturelles -7220Y: Recherche et développement en sciences humaines et sociales -7311Y: Activités d’agence de publicité -7312Y: Régie publicitaire de médias -7320Y: Études de marché et sondages -7330Y: Activités de relations publiques et de communication -7411Y: Activités de design pour la création de mode ou les produits industriels -7412Y: Activités de design graphique et de communication visuelle -7413Y: Activités de design d’intérieur -7414Y: Autres activités spécialisées de design -7420Y: Activités photographiques -7430Y: Activités de traduction et d’interprétation -7491Y: Activités de courtage et de marketing de brevets -7499Y: Toutes les autres activités spécialisées, scientifiques et techniques n.c.a. -7500Y: Activités vétérinaires -7711Y: Location et location-bail de voitures et véhicules automobiles légers -7712Y: Location et location-bail de camions -7721Y: Location et location-bail d’articles de loisirs et de sport -7722Y: Location et location-bail d’autres biens personnels et domestiques -7731Y: Location et location-bail de matériel agricole -7732Y: - Location et location-bail de machines et équipements pour la construction et - le génie civil -7733Y: Location et location-bail de machines et équipements de bureau et d’ordinateurs -7734Y: Location et location-bail de matériels de transport par eau -7735Y: Location et location-bail de matériels de transport aérien -7739Y: Location et location-bail d’autres machines, équipements et biens n.c.a. -7740G: Services de franchise ou de licence de marques -7740H: - Autre location-bail de propriété intellectuelle et de produits similaires, - à l'exception des œuvres soumises à copyright -7751Y: - Activités de service d’intermédiation pour la location et la location-bail - de voitures, camping-cars et caravanes -7752Y: - Activités de service d’intermédiation pour la location et la location-bail - d’autres biens corporels et d’immobilisations incorporelles non financières -7810Y: Activités des agences de placement de main-d’œuvre -7820G: Activités d’agence de travail temporaire -7820H: Autre mise à disposition de ressources humaines -7911Y: Activités d’agence de voyage -7912Y: Activités de voyagiste -7990Y: Autres activités de service de réservation et activités connexes -8001Y: Activités d’investigation et de sécurité privée -8009Y: Activités de sécurité n.c.a. -8110Y: Activités de soutien combinées pour les installations -8121Y: Nettoyage courant des bâtiments -8122Y: Autres activités de nettoyage des bâtiments et nettoyage industriel -8123G: Désinfection, désinsectisation, dératisation -8123H: Autres activités de nettoyage n.c.a. -8130Y: Activités de service d’aménagement paysager -8210Y: Activités de service de bureau et de soutien administratif -8220Y: Activités de centre d’appels -8230Y: Organisation de salons professionnels et congrès -8240Y: - Activités de service d’intermédiation pour des services de soutien aux entreprises - n.c.a. -8291Y: Activités d’agence de recouvrement et de bureau de crédit -8292Y: Activités de conditionnement -8299Y: Autres activités de service de soutien aux entreprises n.c.a. -8411Y: Activités d’administration publique générale -8412Y: - Réglementation des soins de santé, de l’enseignement, des services culturels - et des autres services sociaux -8413Y: - Réglementation et contribution à l’amélioration de l’efficacité des activités - économiques -8421Y: Affaires étrangères -8422Y: Défense -8423Y: Justice -8424Y: Activités d’ordre public et de sécurité civile -8425Y: Activités de service d’incendie et de secours -8430G: Activités générales de sécurité sociale -8430H: Gestion des retraites complémentaires -8430J: Distribution sociale de revenus -8510Y: Enseignement pré-primaire -8520Y: Enseignement primaire -8531Y: Enseignement secondaire général -8532Y: Enseignement secondaire professionnel -8533Y: Enseignement post-secondaire non supérieur -8540Y: Enseignement supérieur -8551Y: Enseignement de disciplines sportives et d’activités de loisirs -8552Y: Enseignement culturel -8553Y: Enseignement de la conduite -8559G: Formation continue d'adultes -8559H: Tous les autres enseignements n.c.a. -8561Y: - Activités de service d’intermédiation dans le domaine de l’appui scolaire et - du tutorat -8569Y: Activités de soutien à l’enseignement n.c.a. -8610Y: Activités hospitalières -8621Y: Activités de médecine générale -8622Y: Activités de médecine spécialisée -8623Y: Activités de soins dentaires -8691Y: Activités d’imagerie médicale et de laboratoire d’analyse médicale -8692Y: Transport de patients par ambulance -8693Y: Activités des psychologues et psychothérapeutes, à l’exception des médecins -8694G: Activités de soins infirmiers -8694H: Activités de maïeutique -8695Y: Activités de physiothérapie -8696Y: Activités de médecine traditionnelle, complémentaire et alternative -8697Y: - Activités de service d’intermédiation pour les services médicaux, dentaires - et autres services pour la santé humaine -8699Y: Autres activités pour la santé humaine n.c.a. -8710G: Activités d’hébergement médicalisé pour personnes âgées -8710H: Activités d’hébergement médicalisé pour enfants en situation de handicap -8710J: - Activités d’hébergement médicalisé pour adultes en situation de handicap et - autres activités d’hébergement médicalisé -8720G: Activités d’hébergement social pour personnes souffrant de maladie mentale -8720H: Activités d’hébergement social pour personnes souffrant de toxicomanie -8730G: Activités d’hébergement social pour personnes âgées -8730H: Activités d’hébergement social pour personnes en situation de handicap physique -8791Y: - Activités de service d’intermédiation pour des activités de soins en établissement - résidentiel -8799G: Activités d’hébergement social pour enfants en difficulté -8799H: - Activités d’hébergement social pour adultes et familles en difficulté et autres - activités d’hébergement social n.c.a. -8810G: Activités d’action sociale à domicile -8810H: - Activités d’accueil ou d’accompagnement sans hébergement d’adultes en situation - de handicap ou de personnes âgées -8810J: Activités de réadaptation professionnelle et réinsertion, aide par le travail -8891G: Accueil de jeunes enfants en structure collective -8891H: Accueil de jeunes enfants à domicile -8891J: Accueil ou accompagnement sans hébergement d’enfants en situation de handicap -8899G: Autre accueil ou accompagnement sans hébergement d’enfants et d’adolescents -8899H: Toutes les autres activités d’action sociale sans hébergement n.c.a. -9011Y: Activités de création littéraire et de composition musicale -9012Y: Activités de création en arts visuels -9013Y: Autres activités de création artistique -9020Y: Activités de spectacle -9031G: - Gestion d’installations et de lieux de production et de diffusion des arts - visuels -9031H: Gestion de salles de spectacle vivant -9039G: Activités de production et organisation d'évènements culturels -9039H: Activités de soutien technique aux spectacles et aux événements culturels -9111Y: Activités des bibliothèques -9112Y: Activités des centres d’archives -9121Y: Activités des musées et collections -9122Y: Activité des monuments et sites historiques -9130Y: - Conservation, restauration et autres activités de soutien pour la préservation - du patrimoine culturel -9141Y: Activités de gestion de jardins botaniques et zoologiques -9142Y: Activités de gestion de réserves naturelles -9200Y: Activités de jeux d’argent et de paris -9311Y: Gestion d’installations sportives -9312Y: Activités des clubs de sports -9313Y: Activités des centres de fitness -9319Y: Autres activités sportives n.c.a. -9321Y: Activités des parcs d’attractions et parcs à thème -9329Y: Activités récréatives et de loisirs n.c.a. -9411Y: Activités des organisations patronales et des chambres représentatives -9412Y: Activités des organisations professionnelles -9420Y: Activités des syndicats de salariés -9491Y: Activités des organisations religieuses -9492Y: Activités des organisations politiques -9499Y: Activités des organisations associatives n.c.a. -9510Y: Réparation et entretien d’ordinateurs et d’équipements de communication -9521Y: Réparation et entretien de produits électroniques grand public -9522Y: - Réparation et entretien d’appareils électroménagers et d’équipements pour la - maison et le jardin -9523Y: Réparation et entretien de chaussures et d’articles en cuir -9524Y: Réparation et entretien de meubles et d’équipements du foyer -9525Y: Réparation et entretien d’articles d’horlogerie et de bijouterie -9529G: Réparation et entretien de cycles et autres engins de la mobilité douce -9529H: - Réparation et entretien de tous les autres biens personnels ou domestiques - n.c.a. -9531G: Réparation et entretien de véhicules automobiles légers (moins de 3,5 tonnes) -9531H: Réparation et entretien d'autres véhicules automobiles -9532Y: Réparation et entretien de motocycles -9540Y: - Activités de service d’intermédiation pour la réparation et l’entretien d’ordinateurs, - de biens personnels et domestiques et d’automobiles et motocycles -9610G: Blanchisserie-teinturerie de gros -9610H: Blanchisserie-teinturerie de détail -9621G: Coiffure et activités de barbier en salon -9621H: Coiffure et activités de barbier hors salon -9622Y: Soins de beauté et autres activités de traitement esthétique -9623Y: Activités de spa, de sauna et de bain de vapeur -9630Y: Services funéraires et activités connexes -9640Y: Activités de service d’intermédiation pour des services aux personnes -9691Y: Activités d’offre de services domestiques aux personnes -9699G: Services pour animaux de compagnie -9699H: Toutes les autres activités de service aux personnes n.c.a. -9700Y: Activités des ménages en tant qu’employeurs de personnel domestique -9810Y: - Activités indifférenciées des ménages en tant que producteurs de biens pour - usage propre -9820Y: - Activités indifférenciées des ménages en tant que producteurs de services pour - usage propre -9900Y: Activités des organisations et organismes extraterritoriaux diff --git a/src/api/main.py b/src/api/main.py index 292cc778..a43c958f 100644 --- a/src/api/main.py +++ b/src/api/main.py @@ -5,16 +5,14 @@ import logging import os from contextlib import asynccontextmanager -from pathlib import Path from typing import Annotated import mlflow -import yaml from fastapi import Depends, FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.security import HTTPBasicCredentials -from api.routes import predict_batch, predict_single +from api.routes import predict from utils.logging import configure_logging from utils.security import get_credentials @@ -26,10 +24,7 @@ async def lifespan(app: FastAPI): logger.info("🚀 Starting API lifespan") model_uri = f"models:/{os.environ['MLFLOW_MODEL_NAME']}/{os.environ['MLFLOW_MODEL_VERSION']}" - app.state.model = mlflow.pytorch.load_model(model_uri) - - libs_path = Path("api/data/libs.yaml") - app.state.libs = yaml.safe_load(libs_path.read_text()) + app.state.model = mlflow.pyfunc.load_model(model_uri) yield logger.info("🛑 Shutting down API lifespan") @@ -42,8 +37,7 @@ async def lifespan(app: FastAPI): version="0.0.1", ) -app.include_router(predict_single.router) -app.include_router(predict_batch.router) +app.include_router(predict.router) app.add_middleware( CORSMiddleware, diff --git a/src/api/routes/predict.py b/src/api/routes/predict.py new file mode 100644 index 00000000..17ba0417 --- /dev/null +++ b/src/api/routes/predict.py @@ -0,0 +1,58 @@ +from typing import Annotated, List + +from fastapi import APIRouter, Depends, Request +from fastapi.security import HTTPBasicCredentials + +from api.models.forms import BatchForms +from api.models.responses import PredictionResponse +from utils.preprocessing import mappings +from utils.security import get_credentials + +APE_NIV5_MAPPING = mappings["nace2025"] +INV_APE_NIV5_MAPPING = {v: k for k, v in APE_NIV5_MAPPING.items()} + +router = APIRouter(prefix="/predict", tags=["Predict NACE code for a list of activities"]) + + +@router.post("/predict", response_model=List[PredictionResponse]) +async def predict( + credentials: Annotated[HTTPBasicCredentials, Depends(get_credentials)], + request: Request, + forms: BatchForms, + nb_echos_max: int = 5, + prob_min: float = 0.01, + num_workers: int = 1, + batch_size: int = 1, +): + """ + Endpoint for predicting batches of data. + + Args: + credentials (HTTPBasicCredentials): The credentials for authentication. + forms (Forms): The input data in the form of Forms object. + nb_echos_max (int, optional): The maximum number of predictions to return. Defaults to 5. + prob_min (float, optional): The minimum probability threshold for predictions. Defaults to 0.01. + num_workers (int, optional): Number of CPU for multiprocessing in Dataloader. Defaults to 1. + batch_size (int, optional): Size of a batch for batch prediction. + + For single predictions, we recommend keeping num_workers and batch_size to 1 for better performance. + For batched predictions, consider increasing these two parameters (num_workers can range from 4 to 12, batch size can be increased up to 256) to optimize performance. + + Returns: + list: The list of predicted responses. + """ + input_data = forms.forms + + params_dict = { + "nb_echos_max": nb_echos_max, + "prob_min": prob_min, + "dataloader_params": { + "pin_memory": False, + "persistent_workers": False, + "num_workers": num_workers, + "batch_size": batch_size, + }, + } + + output = request.app.state.model.predict(input_data, params=params_dict) + return [out.model_dump() for out in output] diff --git a/src/api/routes/predict_batch.py b/src/api/routes/predict_batch.py deleted file mode 100644 index 6decf715..00000000 --- a/src/api/routes/predict_batch.py +++ /dev/null @@ -1,82 +0,0 @@ -from typing import Annotated, List - -import numpy as np -import torch -from fastapi import APIRouter, Depends, Request -from fastapi.security import HTTPBasicCredentials -from torchFastText.datasets import FastTextModelDataset - -from api.models.forms import BatchForms -from api.models.responses import PredictionResponse -from utils.logging import log_prediction -from utils.prediction import process_response -from utils.preprocessing import categorical_features, mappings, preprocess_inputs, text_feature -from utils.security import get_credentials - -router = APIRouter(prefix="/single", tags=["Predict an activity"]) - -APE_NIV5_MAPPING = mappings["nace2025"] -INV_APE_NIV5_MAPPING = {v: k for k, v in APE_NIV5_MAPPING.items()} - -router = APIRouter(prefix="/batch", tags=["Predict a batch of activity"]) - - -@router.post("/predict", response_model=List[PredictionResponse]) -async def predict( - credentials: Annotated[HTTPBasicCredentials, Depends(get_credentials)], - request: Request, - forms: BatchForms, - nb_echos_max: int = 5, - prob_min: float = 0.01, -): - """ - Endpoint for predicting batches of data. - - Args: - credentials (HTTPBasicCredentials): The credentials for authentication. - forms (Forms): The input data in the form of Forms object. - nb_echos_max (int, optional): The maximum number of predictions to return. Defaults to 5. - prob_min (float, optional): The minimum probability threshold for predictions. Defaults to 0.01. - - Returns: - list: The list of predicted responses. - """ - query = preprocess_inputs(forms.forms) - - text, categorical_variables = ( - query[text_feature].values, - query[categorical_features].values, - ) - - dataset = FastTextModelDataset( - texts=text, - categorical_variables=categorical_variables, - tokenizer=request.app.state.model.model.tokenizer, - ) - - batch_size = len(text) if len(text) < 256 else 256 - dataloader = dataset.create_dataloader(batch_size=batch_size, shuffle=False, num_workers=12) - - all_scores = [] - for batch_idx, batch in enumerate(dataloader): - with torch.no_grad(): - scores = request.app.state.model(batch).detach() - all_scores.append(scores) - - all_scores = torch.cat(all_scores) - probs = torch.nn.functional.softmax(scores, dim=1) - sorted_probs, sorted_probs_indices = probs.sort(descending=True, axis=1) - - predicted_class = sorted_probs_indices[:, :nb_echos_max].numpy() - predicted_probs = sorted_probs[:, :nb_echos_max].numpy() - - predicted_class = np.vectorize(INV_APE_NIV5_MAPPING.get)(predicted_class) - predictions = (predicted_class, predicted_probs) - - responses = [] - for i in range(len(predictions[0])): - response = process_response(predictions, i, nb_echos_max, prob_min, request.app.state.libs) - log_prediction(query, response, i) - responses.append(response) - - return responses diff --git a/src/api/routes/predict_single.py b/src/api/routes/predict_single.py deleted file mode 100644 index 316cc387..00000000 --- a/src/api/routes/predict_single.py +++ /dev/null @@ -1,77 +0,0 @@ -from typing import Annotated - -import numpy as np -import torch -from fastapi import APIRouter, Depends, Request -from fastapi.security import HTTPBasicCredentials -from torchFastText.datasets import FastTextModelDataset - -from api.models.forms import SingleForm -from api.models.responses import PredictionResponse -from utils.logging import log_prediction -from utils.prediction import process_response -from utils.preprocessing import categorical_features, mappings, preprocess_inputs, text_feature -from utils.security import get_credentials - -import time - -router = APIRouter(prefix="/single", tags=["Predict an activity"]) - -APE_NIV5_MAPPING = mappings["nace2025"] -INV_APE_NIV5_MAPPING = {v: k for k, v in APE_NIV5_MAPPING.items()} - - -@router.post("/predict", response_model=PredictionResponse) -async def predict( - credentials: Annotated[HTTPBasicCredentials, Depends(get_credentials)], - request: Request, - form: SingleForm, - nb_echos_max: int = 5, - prob_min: float = 0.01, -): - """ - Predict code APE. - - This endpoint accepts input data as query parameters and uses the loaded - ML model to predict the code APE based on the input data. - - Args: - nb_echos_max (int): Maximum number of echoes to consider. Default is 5. - prob_min (float): Minimum probability threshold. Default is 0.01. - - Returns: - dict: Response containing APE codes. - """ - - query = preprocess_inputs([form]) - - text, categorical_variables = ( - query[text_feature].values, - query[categorical_features].values, - ) - - dataset = FastTextModelDataset( - texts=text, - categorical_variables=categorical_variables, - tokenizer=request.app.state.model.model.tokenizer, - ) - dataloader = dataset.create_dataloader(batch_size=1, shuffle=False, num_workers=1) - - batch = next(iter(dataloader)) - with torch.no_grad(): - scores = request.app.state.model(batch).detach() - - probs = torch.nn.functional.softmax(scores, dim=1) - sorted_probs, sorted_probs_indices = probs.sort(descending=True, axis=1) - - predicted_class = sorted_probs_indices[:, :nb_echos_max].numpy() - predicted_probs = sorted_probs[:, :nb_echos_max].numpy() - - predicted_class = np.vectorize(INV_APE_NIV5_MAPPING.get)(predicted_class) - predictions = (predicted_class, predicted_probs) - - response = process_response(predictions, 0, nb_echos_max, prob_min, request.app.state.libs) - - log_prediction(query, response, 0) - - return response diff --git a/src/utils/logging.py b/src/utils/logging.py index a0e4ce22..962feea7 100644 --- a/src/utils/logging.py +++ b/src/utils/logging.py @@ -8,7 +8,6 @@ def configure_logging(): level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s", handlers=[ - logging.FileHandler("codification_ape_log_file.log"), logging.StreamHandler(), ], ) diff --git a/uv.lock b/uv.lock index 42e81bc4..b13d88d1 100644 --- a/uv.lock +++ b/uv.lock @@ -126,6 +126,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + [[package]] name = "anyio" version = "4.9.0" @@ -265,6 +271,7 @@ dependencies = [ { name = "mlflow" }, { name = "nltk" }, { name = "numpy" }, + { name = "omegaconf" }, { name = "pandas" }, { name = "pendulum" }, { name = "pyarrow" }, @@ -291,6 +298,7 @@ requires-dist = [ { name = "mlflow", specifier = ">=2.21.2" }, { name = "nltk", specifier = ">=3.9.1" }, { name = "numpy", specifier = ">=2.2.4" }, + { name = "omegaconf", specifier = ">=2.3.0" }, { name = "pandas", specifier = ">=2.2.3" }, { name = "pendulum", specifier = ">=3.0.0" }, { name = "pyarrow", specifier = ">=19.0.1" }, @@ -1210,6 +1218,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/87/20/199b8713428322a2f22b722c62b8cc278cc53dffa9705d744484b5035ee9/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a", size = 99144, upload-time = "2024-04-03T20:56:12.406Z" }, ] +[[package]] +name = "omegaconf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, +] + [[package]] name = "opentelemetry-api" version = "1.31.1"