Anakin Github에 오신 것을 환영합니다.
Anakin은 크로스 플랫폼, 고성능 추론 엔진으로, 원래 Baidu 엔지니어가 개발했으며 산업 제품의 대규모 응용 프로그램입니다.
Anakin의 최신 기능을 추적하려면 릴리스 발표를 참조하십시오.
유연성
Anakin은 크로스 플랫폼, 고성능 추론 엔진으로 광범위한 신경망 아키텍처 및 다양한 하드웨어 플랫폼을 지원합니다. GPU / x86 / ARM 플랫폼에서 Anakin을 쉽게 실행하는 것은 쉽습니다.
Anakin은 NVIDIA Tensorrt 및 오픈 소스와 통합되어 통합 API 의이 부분이 서비스를 제공하기 위해 서비스를 제공하여 API를 직접 호출하거나 필요에 따라이를 수정할 수 있으며, 이는 개발 요구 사항에보다 유연 할 수 있습니다.
고성능
하드웨어의 성능을 완전히 플레이하기 위해 전방 예측을 다른 수준으로 최적화했습니다.
자동 그래프 퓨전. 주어진 알고리즘에서 모든 성능 최적화의 목표는 ALU를 가능한 한 바쁘게 만드는 것입니다. 운영자 퓨전은 효과적으로 메모리 액세스를 줄이고 ALU를 바쁘게 유지할 수 있습니다.
메모리 재사용. 전방 예측은 일방 통행 계산입니다. 다른 연산자의 입력과 출력 사이의 메모리를 재사용하여 전체 메모리 오버 헤드를 줄입니다.
어셈블리 레벨 최적화. Saber는 Anakin의 기본 DNN 라이브러리로, 조립 수준에서 깊이 최적화되어 있습니다.
CPU :
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) | RT 메모리 (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 메모리 FP32 (MB) | 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 |
| batch_size | RT 대기 시간 (MS) | Anakin2 대기 시간 (MS) | RT 대기 시간 Int8 (MS) | anakin2 대기 시간 INT8 (MS) | RT 메모리 (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 |
CPU :
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz, FP32 테스트 용.
CPU :Intel(R) Xeon(R) Gold 6271 CPU @ 2.60GHz, int8 테스트 용.
시스템 :GCC 4.8.2의CentOS 6.3, Anakin과 Intel Caffe의 벤치 마크.
8 thread parallel 활성화합니다
Anakin의 상대방은 MKLML이있는Intel Cafe(1.1.6) 입니다.
| net_name | batch_size | Anakin2 대기 시간 (2650v4) FP32 (MS) | 카페 대기 시간 (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 |
CPU :
Kirin 980
CPU :Snapdragon 652
CPU :Snapdragon 855
CPU :RK3399
Anakin의 상대는ncnn(20190320) 입니다. 이 벤치 마크는 ARMV7 ARMV8을 분할합니다
one batch 의 대기 시간 ( ms )| 키린 980 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 28.580 | 16.638 | 14.435 | |||||||||
| googlenet | 93.917 | 52.742 | 40.301 | 130.875 | 72.522 | 54.204 |
| Snapdragon 855 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 25.880 | 16.134 | 9.697 | |||||||||
| googlenet | 85.774 | 54.518 | 34.025 | 118.120 | 73.686 | 41.865 |
| Snapdragon 652 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 87.037 | 47.192 | 28.663 | |||||||||
| googlenet | 268.023 | 148.533 | 95.624 | 236.492 | 131.510 | 81.561 |
| RK3399 | 아나킨 FP32 | anakin 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 | ||||||||
| 스퀴 제넷 | 98.489 | 54.863 | ||||||||||
| googlenet | 274.166 | 159.429 | 235.085 | 133.044 |
one batch 의 대기 시간 ( ms )| 키린 980 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 30.148 | 20.908 | 17.084 | |||||||||
| googlenet | 108.210 | 65.798 | 58.630 | 140.886 | 79.910 | 60.693 |
| Snapdragon 855 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 27.860 | 17.538 | 10.729 | |||||||||
| googlenet | 100.719 | 69.509 | 49.021 | 127.982 | 83.369 | 50.275 |
| Snapdragon 652 | 아나킨 FP32 | anakin 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 | ||||||
| 스퀴 제넷 | 92.748 | 51.936 | 33.027 | |||||||||
| googlenet | 296.092 | 179.542 | 125.509 | 242.505 | 140.083 | 89.646 |
| RK3399 | 아나킨 FP32 | anakin 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 | ||||
| 스퀴 제넷 | 104.519 | 59.402 | ||||||
| googlenet | 305.304 | 190.897 | 244.855 | 142.493 |
Doc Index에 있으면됩니다
우리는 또한 영어 및 중국어 튜토리얼 문서를 제공합니다.
사용자 안내서
프로젝트의 작동 원리, C ++ 인터페이스 설명 및 코드 예제를 여기에서 얻을 수 있습니다. 여기에서 모델 변환기에 대해 배울 수도 있습니다.
개발자 가이드
Anakin에 대한 자세한 내용을 알고 더 좋게 만들고 싶을 수도 있습니다. 사용자 정의 장치를 추가하는 방법과 사용자 정의 장치 운영자를 추가하는 방법을 참조하십시오.
기여하는 방법
귀하의 기여에 감사드립니다!
GitHub 문제로 질문과 버그 보고서를 제출할 수 있습니다.
Anakin은 Apache-2.0 라이센스에 따라 제공됩니다.
Anakin은 다음과 같은 프로젝트를 말합니다.