Добро пожаловать в Anakin Github.
Anakin-это кроссплатформенный, высокопроизводительный двигатель вывода, который первоначально разработан инженерами Baidu и является крупномасштабным применением промышленных продуктов.
Пожалуйста, обратитесь к нашему объявлению о выпуске, чтобы отслеживать последнюю функцию Anakin.
Гибкость
Anakin-это кроссплатформенный, высокопроизводительный механизм вывода, поддерживает широкий спектр архитектур нейронных сети и различных аппаратных платформ. Легко запустить Anakin на GPU / x86 / ARM Platform.
Anakin интегрировал с Nvidia Tensorrt и с открытым исходным кодом этой части интегрированного API для предоставления услуг, разработчики могут вызывать API напрямую или изменить его по мере необходимости, что будет более гибким для требований к разработке.
Высокая производительность
Чтобы дать полную игру для производительности аппаратного обеспечения, мы оптимизируем прогноз вперед на разных уровнях.
Автоматическое слияние графика. Цель всех оптимизаций производительности в рамках данного алгоритма - сделать ALU максимально занятым. Фьюжн оператора может эффективно уменьшить доступ к памяти и держать Alu занятым.
Повторное использование памяти. Правовое прогноз-это односторонний расчет. Мы повторно используем память между входом и выводом различных операторов, тем самым уменьшая общие накладные расходы на память.
Оптимизация уровня сборки. Sabre является основной библиотекой DNN для Анакина, которая глубоко оптимизирована на уровне сборки.
ЦП:
Intel(R) Xeon(R) CPU 5117 @ 2.0GHz
GPU:Tesla P4
CUDA:CUDA8
Cudnn:v7
ms ) и память (MB) различной партииКонтрактом
Anakinявляется признанный высокопроизводительный двигатель выводаNVIDIA TensorRT 5, модели, которые не поддерживают Tensorrt 5, мы используем пользовательские плагины для поддержки.
| Batch_size | Задержка RT FP32 (MS) | Задержка Anakin2 FP32 (MS) | РТ -память (MB) | Память 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 FP32 (MS) | Задержка Anakin2 FP32 (MS) | Задержка RT int8 (MS) | Задержка Anakin2 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 (MS) | Задержка Anakin2 (MS) | Задержка RT int8 (MS) | Задержка Anakin2 Int8 (MS) | РТ -память (MB) | Память 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 |
ЦП:
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHzс HT, для теста FP32
ЦП:Intel(R) Xeon(R) Gold 6271 CPU @ 2.60GHzс HT, для теста Int8
Система:CentOS 6.3сGCC 4.8.2для теста между Anakin и Intel Caffe
8 thread parallelАналером
AnakinявляетсяIntel Cafe(1.1.6) с MKLML.
| Net_name | Batch_size | Задержка Anakin2 (2650V4) FP32 (MS) | Задержка CAFFE (2650V4) FP32 (MS) | Задержка Anakin2 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 |
ЦП:
Kirin 980
ЦП:Snapdragon 652
ЦП:Snapdragon 855
ЦП:RK3399
AnakinАнакин -ncnn(20190320) . Этот эталон мы тестируем ARMV7 ARMV8 Располочно
ms ) one batch| Кирин 980 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 ) one batch| Кирин 980 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | 1 нить | 2 потока | 4 потока | |
| 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 | Анакин FP32 | Анакин Int8 | NCNN FP32 | Ncnn int8 | ||||
|---|---|---|---|---|---|---|---|---|
| 1 нить | 2 потока | 1 нить | 2 потока | 1 нить | 2 потока | 1 нить | 2 потока | |
| 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 |
Все, что вам нужно, это в индексе DOC
Мы также предоставляем английскую и китайскую учебную документацию.
Руководство пользователя
Вы можете получить принцип работы проекта, описание интерфейса C ++ и примеры кода отсюда. Вы также можете узнать о конвертере модели здесь.
Руководство разработчика
Возможно, вы захотите узнать больше подробностей об Анакине и сделать его лучше. Пожалуйста, обратитесь к тому, как добавить пользовательские устройства и как добавить пользовательские операторы устройства.
Как внести свой вклад
Мы ценим ваш вклад!
Вы можете отправить вопросы и отчеты об ошибках в качестве проблем Github.
Анакин предоставляется по лицензии Apache-2.0.
Анакин относится к следующим проектам: