Bienvenido al Anakin Github.
Anakin es un motor de inferencia de alto rendimiento multiplataforma, que es desarrollado originalmente por Baidu Engineers y es una aplicación a gran escala de productos industriales.
Consulte nuestro anuncio de lanzamiento para rastrear la última función de Anakin.
Flexibilidad
Anakin es un motor de inferencia multiplataforma y de alto rendimiento, admite una amplia gama de arquitecturas de redes neuronales y diferentes plataformas de hardware. Es fácil ejecutar Anakin en la plataforma GPU / X86 / ARM.
Anakin se ha integrado con NVIDIA Tensorrt y Open Fore esta parte de la API integrada para proporcionar servicios, los desarrolladores pueden llamar a la API directamente o modificarlo según sea necesario, lo que será más flexible para los requisitos de desarrollo.
Rendimiento alto
Para dar juego completo al rendimiento del hardware, optimizamos la predicción hacia adelante en diferentes niveles.
Fusión de gráficos automáticos. El objetivo de todas las optimizaciones de rendimiento bajo un algoritmo dado es hacer que el ALU sea lo más ocupado posible. Operator Fusion puede reducir efectivamente el acceso a la memoria y mantener el Alu ocupado.
Reutilización de memoria. La predicción hacia adelante es un cálculo unidireccional. Reutilizamos la memoria entre la entrada y la salida de diferentes operadores, reduciendo así la sobrecarga general de la memoria.
Optimización del nivel de ensamblaje. Saber es una biblioteca DNN subyacente para Anakin, que está profundamente optimizada a nivel de ensamblaje.
CPU:
Intel(R) Xeon(R) CPU 5117 @ 2.0GHz
GPU:Tesla P4
CUDA:CUDA8
Cudnn:v7
ms ) y memoria (MB) de diferentes lotesLa contraparte de
Anakines el motor de inferencia de alto rendimiento reconocidoNVIDIA TensorRT 5, los modelos que Tensorrt 5 no admite que usamos los complementos personalizados para admitir.
| Lote_size | RT Latency Fp32 (MS) | ANAKIN2 LATENCIA FP32 (MS) | Memoria RT (MB) | Memoria Anakin2 (MB) |
|---|---|---|---|---|
| 1 | 8.52532 | 8.2387 | 1090.89 | 702 |
| 2 | 14.1209 | 13.8772 | 1056.02 | 768.76 |
| 4 | 24.4529 | 24.3391 | 1002.17 | 840.54 |
| 8 | 46.7956 | 46.3309 | 1098.98 | 935.61 |
| Lote_size | RT Latency Fp32 (MS) | ANAKIN2 LATENCIA FP32 (MS) | RT Latency Int8 (MS) | ANAKIN2 LATENCIA INT8 (MS) | RT Memory Fp32 (MB) | Memoria ANAKIN2 FP32 (MB) |
|---|---|---|---|---|---|---|
| 1 | 4.6447 | 3.0863 | 1.78892 | 1.61537 | 1134.88 | 311.25 |
| 2 | 6.69187 | 5.13995 | 2.71136 | 2.70022 | 1108.86 | 382 |
| 4 | 11.1943 | 9.20513 | 4.16771 | 4.77145 | 885.96 | 406.86 |
| 8 | 19.8769 | 17.1976 | 6.2798 | 8.68197 | 813.84 | 532.61 |
| Lote_size | Latencia RT (MS) | Latencia Anakin2 (MS) | RT Latency Int8 (MS) | ANAKIN2 LATENCIA INT8 (MS) | Memoria RT (MB) | Memoria Anakin2 (MB) |
|---|---|---|---|---|---|---|
| 1 | 9.98695 | 5.44947 | 2.81031 | 2.74399 | 1159.16 | 500.5 |
| 2 | 17.3489 | 8.85699 | 4.8641 | 4.69473 | 1158.73 | 492 |
| 4 | 20.6198 | 16.8214 | 7.11608 | 8.45324 | 1021.68 | 541.08 |
| 8 | 31.9653 | 33.5015 | 11.2403 | 15.4336 | 914.49 | 611.54 |
CPU:
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHzcon HT, para la prueba FP32
CPU:Intel(R) Xeon(R) Gold 6271 CPU @ 2.60GHzcon HT, para la prueba INT8
Sistema:CentOS 6.3conGCC 4.8.2, para el punto de referencia entre Anakin e Intel Caffe
8 thread parallelLa contraparte de
AnakinesIntel Cafe(1.1.6) con MKLML.
| Net_name | Lote_size | Latencia ANAKIN2 (2650V4) FP32 (MS) | Latencia Caffe (2650V4) FP32 (MS) | ANAKIN2 LATENCIA INT8 (6271) (MS) |
|---|---|---|---|---|
| resnet50 | 1 | 20.6201 | 24.1369 | 3.20866 |
| resnet50 | 2 | 39.2286 | 43.1096 | 5.44311 |
| resnet50 | 4 | 77.1392 | 81.8814 | 9.93424 |
| resnet50 | 8 | 152.941 | 158.321 | 19.5618 |
| VGG16 | 1 | 55.6132 | 70.532 | 15.3181 |
| VGG16 | 2 | 96.5034 | 131.451 | 22.5082 |
| VGG16 | 4 | 180.479 | 247.926 | 37.2974 |
| VGG16 | 8 | 346.619 | 485.44 | 67.6682 |
| mobilenetv1 | 1 | 3.98104 | 5.42775 | 0.926546 |
| mobilenetv1 | 2 | 7.27079 | 9.16058 | 1.35007 |
| mobilenetv1 | 4 | 14.4029 | 16.2505 | 2.37271 |
| mobilenetv1 | 8 | 29.1651 | 29.8381 | 3.75992 |
| VGG16_SSD | 1 | 125.948 | 143.412 | |
| VGG16_SSD | 2 | 247.242 | 266.22 | |
| VGG16_SSD | 4 | 488.377 | 510.978 | |
| VGG16_SSD | 8 | 972.762 | 995.407 | |
| mobilenetv2 | 1 | 3.78504 | 23.0066 | |
| mobilenetv2 | 2 | 7.24622 | 65.9301 | |
| mobilenetv2 | 4 | 13.7638 | 85.3893 | |
| mobilenetv2 | 8 | 28.4093 | 131.669 |
CPU:
Kirin 980
CPU:Snapdragon 652
CPU:Snapdragon 855
CPU:RK3399
La contraparte de
Anakinesncnn(20190320) . Este punto de referencia probamos ARMV7 ARMV8 Splitly
ms ) de one batch| Kirin 980 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 34.172 | 19.369 | 12.723 | 37.588 | 20.692 | 13.280 | 45.420 | 24.220 | 16.730 | 50.560 | 27.820 | 20.010 |
| mobilenet_v2 | 30.489 | 17.784 | 12.327 | 29.581 | 17.208 | 15.307 | 30.390 | 17.310 | 12.900 | |||
| mobilenet_ssd | 71.609 | 37.477 | 28.952 | 88.220 | 70.070 | 66.430 | 103.700 | 85.160 | 85.320 | |||
| resnet50 | 255.748 | 137.842 | 104.628 | 1299.480 | 695.830 | 498.010 | 243.360 | 131.100 | 89.800 | |||
| shufflenetv1 | 11.544 | 8.931 | 7.027 | 12.810 | 9.390 | 8.030 | ||||||
| shufflenetv2 | 11.687 | 7.899 | 5.321 | 20.402 | 11.529 | 9.061 | ||||||
| squeezenet | 28.580 | 16.638 | 14.435 | |||||||||
| googlenet | 93.917 | 52.742 | 40.301 | 130.875 | 72.522 | 54.204 |
| Snapdragon 855 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 32.019 | 19.024 | 10.491 | 34.363 | 20.292 | 10.382 | 37.110 | 22.310 | 13.520 | 47.430 | 28.350 | 15.830 |
| mobilenet_v2 | 28.533 | 17.455 | 10.433 | 24.487 | 15.182 | 9.133 | 25.060 | 15.970 | 11.250 | |||
| mobilenet_ssd | 66.454 | 41.397 | 23.639 | 101.560 | 69.380 | 43.930 | 136.420 | 91.010 | 47.490 | |||
| resnet50 | 201.362 | 132.133 | 78.300 | 1141.290 | 724.090 | 385.990 | 229.020 | 138.450 | 82.060 | |||
| shufflenetv1 | 10.153 | 7.101 | 5.327 | 11.610 | 8.020 | 5.870 | ||||||
| shufflenetv2 | 10.868 | 6.713 | 4.526 | 17.306 | 10.987 | 6.788 | ||||||
| squeezenet | 25.880 | 16.134 | 9.697 | |||||||||
| googlenet | 85.774 | 54.518 | 34.025 | 118.120 | 73.686 | 41.865 |
| Snapdragon 652 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 109.994 | 54.937 | 33.174 | 83.887 | 43.639 | 24.665 | 123.320 | 122.670 | 65.100 | 128.800 | 154.370 | 125.570 |
| mobilenet_v2 | 80.712 | 46.314 | 30.874 | 69.340 | 43.590 | 31.864 | 89.920 | 90.900 | 55.320 | |||
| mobilenet_ssd | 246.459 | 121.684 | 134.019 | 248.190 | 138.170 | 142.350 | 247.020 | 145.080 | 211,000 | |||
| resnet50 | 673.285 | 346.287 | 378.065 | 880.940 | 514.190 | 533.760 | 313.630 | |||||
| shufflenetv1 | 34.948 | 26.635 | 21.571 | 39.950 | 25.520 | 20.180 | ||||||
| shufflenetv2 | 35.530 | 21.440 | 16.434 | 49.498 | 29.116 | 19.346 | ||||||
| squeezenet | 87.037 | 47.192 | 28.663 | |||||||||
| googlenet | 268.023 | 148.533 | 95.624 | 236.492 | 131.510 | 81.561 |
| RK3399 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 111.317 | 60.008 | 87.201 | 45.693 | 149.270 | 91.200 | 142.790 | 86.140 | ||||
| mobilenet_v2 | 105.767 | 60.899 | 79.065 | 53.914 | 118.530 | 86.900 | ||||||
| mobilenet_ssd | 232.923 | 128.337 | 268.900 | 157.860 | 256.560 | 149.730 | ||||||
| resnet50 | 671.800 | 369.386 | 1029.300 | 571.230 | 569.250 | 344.830 | ||||||
| shufflenetv1 | 38.761 | 25.971 | ||||||||||
| shufflenetv2 | 36.220 | 22.095 | 51.879 | 30.351 | ||||||||
| squeezenet | 98.489 | 54.863 | ||||||||||
| googlenet | 274.166 | 159.429 | 235.085 | 133.044 |
ms ) de one batch| Kirin 980 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 39.051 | 19.813 | 14.184 | 39.026 | 22.048 | 14.250 | 50.240 | 26.850 | 20.010 | 92.900 | 49.420 | 37.160 |
| mobilenet_v2 | 36.052 | 19.550 | 14.507 | 32.656 | 19.641 | 15.735 | 35.890 | 20.730 | 18.550 | |||
| mobilenet_ssd | 83.474 | 44.530 | 33.116 | 99.960 | 53.160 | 84.360 | 180,000 | 91.380 | 68.140 | |||
| resnet50 | 291.478 | 158.954 | 129.484 | 1412.37 | 766.62 | 560.760 | 355.010 | 189.18 | 133.410 | |||
| shufflenetv1 | 11.909 | 9.761 | 7.441 | 16.030 | 10.660 | 8.120 | ||||||
| shufflenetv2 | 11.755 | 7.983 | 6.289 | 21.968 | 14.111 | 9.888 | ||||||
| squeezenet | 30.148 | 20.908 | 17.084 | |||||||||
| googlenet | 108.210 | 65.798 | 58.630 | 140.886 | 79.910 | 60.693 |
| Snapdragon 855 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 34.015 | 20.064 | 11.410 | 42.222 | 21.532 | 11.746 | 41.150 | 24.870 | 18.420 | 79.180 | 48.470 | 24.530 |
| mobilenet_v2 | 30.742 | 18.507 | 11.354 | 24.628 | 15.133 | 9.079 | 30.060 | 19.220 | 15.520 | |||
| mobilenet_ssd | 69.749 | 44.010 | 26,000 | 85.030 | 62.770 | 48.940 | 154.600 | 138.700 | 82.140 | |||
| resnet50 | 218.581 | 146.509 | 92.899 | 1380.340 | 996.410 | 540.660 | 324.720 | 261.920 | 126.270 | |||
| shufflenetv1 | 11.032 | 7.430 | 5.369 | 13.390 | 9.270 | 6.360 | ||||||
| shufflenetv2 | 11.372 | 7.120 | 4.728 | 19.393 | 12.278 | 7.719 | ||||||
| squeezenet | 27.860 | 17.538 | 10.729 | |||||||||
| googlenet | 100.719 | 69.509 | 49.021 | 127.982 | 83.369 | 50.275 |
| Snapdragon 652 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | 1 hilo | 2 hilo | 4 hilo | |
| mobilenet_v1 | 121.982 | 63.004 | 37.325 | 86.672 | 45.728 | 26.354 | 130.740 | 140.850 | 81.810 | 184.630 | 192.730 | 144.740 |
| mobilenet_v2 | 89.113 | 50.609 | 35.291 | 72.679 | 45.888 | 33.887 | 94.520 | 101.380 | 65.570 | |||
| mobilenet_ssd | 236.466 | 132.293 | 86.335 | 270.630 | 295.520 | 174.280 | 350.640 | 286.420 | 243.850 | |||
| resnet50 | 751.528 | 405.433 | 255.699 | 2762.890 | 1447.070 | 883.730 | 664.180 | 369.020 | ||||
| shufflenetv1 | 36.883 | 23.718 | 15.144 | 53.660 | 33.450 | 23.330 | ||||||
| shufflenetv2 | 36.933 | 26.353 | 20.507 | 53.243 | 31.083 | 21.550 | ||||||
| squeezenet | 92.748 | 51.936 | 33.027 | |||||||||
| googlenet | 296.092 | 179.542 | 125.509 | 242.505 | 140.083 | 89.646 |
| RK3399 | Anakin FP32 | Anakin int8 | NCNN FP32 | Ncnn int8 | ||||
|---|---|---|---|---|---|---|---|---|
| 1 hilo | 2 hilo | 1 hilo | 2 hilo | 1 hilo | 2 hilo | 1 hilo | 2 hilo | |
| mobilenet_v1 | 116.981 | 65.033 | 87.768 | 47.617 | 155.830 | 98.520 | 201.800 | 116.440 |
| mobilenet_v2 | 118.229 | 70.567 | 83.790 | 55.413 | 126.530 | 90.930 | ||
| mobilenet_ssd | 237.196 | 134.508 | 292.130 | 183.650 | 361.570 | 200.370 | ||
| resnet50 | 725.582 | 413.995 | 2883.120 | 1632.800 | 702.660 | 404.970 | ||
| shufflenetv1 | 41.094 | 27.353 | ||||||
| shufflenetv2 | 37.660 | 23.489 | 53.558 | 32.122 | ||||
| squeezenet | 104.519 | 59.402 | ||||||
| googlenet | 305.304 | 190.897 | 244.855 | 142.493 |
Todo lo que necesitas es en el índice de doc
También proporcionamos documentación tutorial de inglés y chino.
Guía del usuario
Puede obtener el principio de funcionamiento del proyecto, la descripción de la interfaz C ++ y los ejemplos de código de aquí. También puede aprender sobre el convertidor de modelos aquí.
Guía de desarrolladores
Es posible que desee saber más detalles de Anakin y mejorarlo. Consulte cómo agregar dispositivos personalizados y cómo agregar operadores de dispositivos personalizados.
Cómo contribuir
¡Apreciamos sus contribuciones!
Puede enviar preguntas e informes de errores como problemas de GitHub.
Anakin se proporciona bajo la licencia Apache-2.0.
Anakin se refiere a los siguientes proyectos: