Salut, bonjour, amis! Je suis l'auteur de Kuiperinfer. En tant que parcours open source, KuipeRinfer a remporté jusqu'à présent 2,5 km d'étoiles sur Github. Désormais basé sur le cours d'origine, nous avons lancé le "Framework d'inférence de Mockup Infect sur main sur la fabrication". Le nouveau cours prend en charge la série de modèles LLAMA (y compris la dernière série de modèles LLAMA3.2) et QWEN2.5, et prend en charge l'accélération CUDA et la quantification INT8 , qui a été largement louée depuis son lancement.
https://l0kzvikuq0w.feishu.cn/docx/zf2hd0xfaoaxqaxcpn2c5ohanbc
Si vous êtes intéressé par le raisonnement grand modèle, souhaitez avoir une compréhension approfondie et maîtriser les technologies pertinentes, et que vous souhaitez vous démarquer dans le recrutement scolaire et les entretiens de recrutement d'automne, ce cours "Frame-inférence à la main à la main" ne doit pas être manqué. Venez nous rejoindre et commencez votre parcours d'apprentissage ensemble! Les étudiants intéressés sont invités à scanner le code QR sous le cours ou à ajouter WeChat Lyrry1997 pour participer au cours

Vous amène à créer un cadre de raisonnement d'apprentissage en profondeur de vos propres mains. Suivez mon espace de station B pour obtenir les dernières mises à jour vidéo.
Suivez ce projet et commencez par votre propre cadre de raisonnement en profondeur à partir de zéro, vous obtiendrez ce qui suit:
Lien de cours vidéo: https://space.bilibili.com/1822828582
Le deuxième cours est une version de réinitialisation du premier cours, et le contenu est plus épanouissant et parfait. Voir le chapitre ci-dessous pour le premier plan de cours.
| Nombre de cours | calendrier | Lien de cours |
|---|---|---|
| Conférence 1 Prévisualité du projet et configuration de l'environnement | Finition | https://www.bilibili.com/video/bv118411f7ym |
| Conférence 2 Conception et mise en œuvre des tenseurs | Finition | https://www.bilibili.com/video/bv1hn411k7q7 |
| Conférence 3 Définition du graphique de calcul | Finition | https://www.bilibili.com/video/bv1vc411m7yp |
| Conférence 4: Construire des relations de graphique de calcul et l'ordre d'exécution | Finition | https://www.bilibili.com/video/bv19s4y1r7az |
| Conférence 5: opérateurs et travailleurs enregistrés à KuipeRinfer | Finition | https://www.bilibili.com/video/bv1gx4y1o7pj |
| Conférence 6: mise en œuvre des opérateurs de convolution et de mise en commun | Finition | https://www.bilibili.com/video/bv1hx4y197ds |
| Conférence 7: Analyse lexicale et analyse grammaticale et mise en œuvre de l'opérateur dans la couche d'expression | Finition | https://www.bilibili.com/video/bv1j8411o7ao |
| Conférence 8: Le cadre de raisonnement fait maison prend en charge le raisonnement des réseaux Resnet | Finition | https://www.bilibili.com/video/bv1o84y1o7ni |
| Conférence 9: Le cadre de raisonnement fait maison soutient le raisonnement du réseau Yolov5 | Finition | https://www.bilibili.com/video/bv1qk4y1a7xl |
? KuipeRinfer prend actuellement en charge l'inférence du réseau Unet et utilise les poids pré-formation de Carvana
La reproduction du raisonnement peut se référer à la démo exécutant Kuiper à la fin de l'article
La démo utilise directement les poids pré-formés (ensemble de données de coco) de Yolov5-S et utilise kuiperinfer pour raisonner

J'ai un cours d'enseignement sur Bilibili, et ce sont actuellement les 13 premiers cours du cours. Le plan du cours est le suivant, la page d'accueil est: https://space.bilibili.com/1822828582. Tout le monde est invité à suivre et à soutenir. La façon d'entrer le groupe d'apprentissage est comme indiqué dans le code QR dans l'image ci-dessus.
| Nombre de cours | Contenu principal | calendrier | Lien de cours |
|---|---|---|---|
| Première classe | Configuration globale de l'environnement d'interprétation du cadre et de développement | Finition | https://www.bilibili.com/video/bv1hv4y1a7h8/ |
| Deuxième leçon | L'analyse de la classe du tenseur du tenseur et la disposition de la mémoire des données d'entrée | Finition | https://www.bilibili.com/video/bv1ed4y1v7gb/ |
| La troisième leçon | Initialiser une instance de tenseur de tenseur à partir d'un fichier CSV | Finition | https://www.bilibili.com/video/bv1pg411j7v5/ |
| Leçon 4 | Manuscrit le premier opérateur relu et terminer la classe d'usine d'enregistrement de l'opérateur | Finition | https://www.bilibili.com/video/bv1bg4y1j7sq/ |
| Leçon 5 | Le principe d'Im2Col et la mise en œuvre de l'opérateur de convolution | Finition | https://www.bilibili.com/video/bv1f841137ct |
| Leçon 6 | Complétez l'opérateur de maxpooling en dessinant un chat et en dessinant un tigre | Finition | https://www.bilibili.com/video/bv1m3411s7yy |
| Leçon 7 | Structure du graphique (PNNX) Explication et graphique de calcul préliminaire | Finition | https://www.bilibili.com/video/bv1vw4y1v7vp |
| Leçon 8 | Lisez PNNX et créez votre propre diagramme de calcul | Finition | https://www.bilibili.com/video/bv1hy4y1z7s3 |
| Leçon 9 | La mise en œuvre de l'opérateur de convolution et le principe du calcul accéléré IM2COL | Finition | https://www.bilibili.com/video/bv1f841137ct |
| Leçon 10 | Explorez à nouveau la classe du tenseur, créez la relation graphique du graphique de calcul et pré-allocation de l'entrée et de la sortie de l'opérateur | Finition | https://www.bilibili.com/video/bv1m54y1k7ag |
| Leçon 11 | Processus d'exécution de l'opérateur | Finition | https://www.bilibili.com/video/bv1wy411c7kv |
| Leçon 12 | Utilisez notre cadre de raisonnement fait maison pour compléter l'inférence et la classification des images de réseaux Resnet | Finition | https://www.bilibili.com/video/bv1jd4y1m772 |
| Leçon 13 | Soutenez le raisonnement du modèle Yolov5 avec un cadre de raisonnement fait maison | Finition | https://www.bilibili.com/video/bv1xs4y1j7t2 |
Merci aux étudiants suivants pour leurs efforts pour Kuiperinfer
Ce projet équivaut au projet en amont ou pré-recherche du cours
Chaque fonctionnalité ici peut devenir un point de connaissance du cours vidéo, qu'elle soit développée par moi ou améliorée par d'autres étudiants.
Conseils:
$DEVELOPMENT ou spécifier -DDEVELOPMENT=ON dans le fichier cmake. apt install cmake, libopenblas-dev, liblapack-dev, libarpack-dev, libsuperlu-devConseils:
Veuillez copier l'adresse absolue ou relative de l'image Test.png dans tmp/unet/demo après compilation, puis exécutez le programme d'inférence dans le format suivant dans build/demos
./unet_test test.png unet_demo.pnnx.param unet_demo.pnnx.binL'adresse de téléchargement du modèle PNNX: https://cowtransfer.com/s/09c7f337bab443
Si le raisonnement réussit, vous verrez le résultat du fractionnement de l'image d'origine dans le dossier unet_output.jpg.
Veuillez modifier le code suivant dans le dossier yolo_test.cpp sous le dossier Demos
const std::string& image_path = " imgs/car.jpg " ;
const std::string& param_path = " tmp/yolo/demo/yolov5s_batch8.pnnx.param " ;
const std::string& bin_path = " tmp/yolo/demo/yolov5s_batch8.pnnx.bin " ; image_path spécifie le répertoire d'image, param_path est le fichier de paramètre du modèle, et bin_path est le fichier de poids du modèle. Veuillez le remplacer par votre chemin local.
La définition du modèle et l'adresse de téléchargement de poids sont les suivantes: https://cowtransfer.com/s/9bc43e0905cb40
Une fois la compilation terminée, appelez ./build/demos/yolo_test dans le répertoire du projet
Concept global: optimiser progressivement les opérateurs existants; développer des opérateurs non implémentés en cas de besoin
La source est le répertoire source
Le test est un répertoire de test unitaire, mettant essentiellement la mise en œuvre des droits de test unitaire de la méthode publique
Benchmark est une référence Google, qui contient des tests de performances pour MobileNetV3, RESNET18 et YOLOV5S.
15 Core AMD EPYC 7543 (Xiaolong) Processeur de 32 cœurs (Docker Container, l'hôte a un total de 32 cœurs)
GCC (Ubuntu 9.4.0-1Ubuntu1 ~ 20.04.1) 9.4.0
Qui prend du temps et coure cinq fois consécutifs et calculé de manière moyenne
| taille d'entrée | Nom du modèle | Équipement informatique | prend du temps |
|---|---|---|---|
| 224 × 224 lot = 8 | Mobilenetv3small | CPU (armadillo + openblas) | 6,76 ms / image |
| 224 × 224 lot = 8 | Resnet18 | CPU (armadillo + openblas) | 23,53 ms / image |
| 224 × 224 lot = 16 | Resnet18 | CPU (armadillo + openblas) | 13,52 ms / image |
| 640 × 640 lot = 8 | Yolov5nano | CPU (armadillo + openblas) | 78,37 ms / image |
| 640 × 640 lot = 8 | Yolov5s | CPU (armadillo + openblas) | 177,54 ms / image |
| 640 × 640 lot = 16 | Yolov5s | CPU (armadillo + openblas) | 134,57 ms / image |
Le cadre de raisonnement NCNN a conservé le protocole BSD de NCNN dans le code référencé https://github.com/tencent/ncnn
Excellente bibliothèque mathématique Openblas: https://github.com/xianyi/openblas
Excellente bibliothèque mathématique Armadillo: https://arma.sourceforge.net/docs.html
Caffe Framework qui m'inspire: https://github.com/bvlc/caffe
Framework fmath: https://github.com/herumi/fmath/