Bem -vindo ao Anakin Github.
O Anakin é um mecanismo de inferência de plataforma cruzada e de alto desempenho, que é originalmente desenvolvida pelos engenheiros do Baidu e é uma aplicação em larga escala de produtos industriais.
Consulte o nosso anúncio de lançamento para rastrear o último recurso de Anakin.
Flexibilidade
O Anakin é um mecanismo de inferência de plataforma cruzada e de alto desempenho, suporta uma ampla gama de arquiteturas de rede neural e diferentes plataformas de hardware. É fácil executar Anakin na plataforma GPU / X86 / ARM.
Anakin se integrou à NVIDIA Tensorrt e de código aberto desta parte da API integrada para fornecer serviços, os desenvolvedores podem chamar a API diretamente ou modificá -la conforme necessário, o que será mais flexível para os requisitos de desenvolvimento.
Alto desempenho
Para dar um jogo completo ao desempenho do hardware, otimizamos a previsão para a frente em diferentes níveis.
Fusão automática de gráficos. O objetivo de todas as otimizações de desempenho sob um determinado algoritmo é tornar o ALU o mais ocupado possível. A fusão do operador pode efetivamente reduzir o acesso à memória e manter o ALU ocupado.
Reutilização de memória. A previsão direta é um cálculo unidirecional. Reutilizamos a memória entre a entrada e a saída de diferentes operadores, reduzindo assim a sobrecarga geral da memória.
Otimização do nível de montagem. O Saber é uma biblioteca DNN subjacente para Anakin, que é profundamente otimizada no nível da montagem.
CPU:
Intel(R) Xeon(R) CPU 5117 @ 2.0GHz
GPU:Tesla P4
CUDA:CUDA8
CUDNN:v7
ms ) e memória (mb) de diferentes loteA contraparte de
Anakiné o mecanismo de inferência de alto desempenho reconhecidoNVIDIA TensorRT 5, os modelos que o Tensorrt 5 não suporta que usamos os plug -ins personalizados para suportar.
| Batch_size | RT Latência Fp32 (MS) | Anakin2 Latência Fp32 (MS) | Memória RT (MB) | Memória 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 |
| Batch_size | RT Latência Fp32 (MS) | Anakin2 Latência Fp32 (MS) | RT Latência Int8 (MS) | Anakin2 Latência Int8 (MS) | RT Memory Fp32 (MB) | Anakin2 Memory 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 |
| Batch_size | RT Latência (MS) | Anakin2 Latência (MS) | RT Latência Int8 (MS) | Anakin2 Latência Int8 (MS) | Memória RT (MB) | Memória 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.20GHzcom HT, para teste FP32
CPU:Intel(R) Xeon(R) Gold 6271 CPU @ 2.60GHzcom HT, para teste INT8
Sistema:CentOS 6.3comGCC 4.8.2, para referência entre Anakin e Intel Caffe
8 thread parallelA contraparte de
AnakinéIntel Cafe(1.1.6) com Mklml.
| Net_name | Batch_size | Anakin2 Latência (2650v4) fp32 (ms) | Latência de Caffe (2650v4) FP32 (MS) | Anakin2 Latência 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
A contraparte de
Anakinéncnn(20190320) . Nesta referência, testamos o ARMV7 ARMV8
ms ) de one batch| Kirin 980 | Anakin Fp32 | Anakin Int8 | Ncnn fp32 | NCNN INT8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | 1 thread | 2 thread | 4 thread | |
| 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 thread | 2 thread | 1 thread | 2 thread | 1 thread | 2 thread | 1 thread | 2 thread | |
| 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 |
Tudo que você precisa é no índice de documentos
Também fornecemos documentação do tutorial em inglês e chinês.
Guia do usuário
Você pode obter o princípio de trabalho do projeto, a descrição da interface C ++ e os exemplos de código daqui. Você também pode aprender sobre o conversor do modelo aqui.
Guia do desenvolvedor
Você pode querer saber mais detalhes de Anakin e torná -lo melhor. Consulte como adicionar dispositivos personalizados e como adicionar operadores de dispositivos personalizados.
Como contribuir
Agradecemos suas contribuições!
Você pode enviar perguntas e relatórios de bugs como problemas do GitHub.
Anakin é fornecido sob a licença Apache-2.0.
Anakin refere -se aos seguintes projetos: