RedisAI 및 RedisGears에 대한 BERT 대규모 질문 응답 추론의 벤치마크


Unsplash의 Aliaksei manlyx 사진

업데이트된 연습 및 테스트:

https://reference-architecture.ai/docs/bert-qa-benchmarking/ — BERT LARGE UNCASE for Question Answering ~0.088387초

벤치마크 실행을 위한 전제 조건:

Debian 또는 ubuntu를 실행 중이라고 가정하고 docker 및 docker-compose(또는 conda를 통해 가상 환경을 만들 수 있음)가 있습니다.

git clone -b benchmark — recurse-submodules [email protected]:applied-knowledge-systems/the-pattern.git

cd the-pattern

./bootstrap_benchmark.sh


qasearch API에 대한 curl 호출로 끝나야 합니다.

Curl 호출은 다음과 같습니다.

curl -i -H “Content-Type: application/json” -X POST -d ‘{“search”:”Who performs viral transmission among adults?”}’ http://localhost:8080/qasearch

HTTP/1.1 200 OK

Server: gunicorn

Date: Fri, 15 Oct 2021 22:11:23 GMT

Connection: close

Content-Type: application/json

Content-Length: 426

{“links”:[{“created_at”:”2001",”rank”:29,”source”:”C0001486",”target”:”C0152083"}],”results”:[{“answer”:””,”sentence”:”Initially the 5 most gene 1 of the viral genome is translated into the viral A dROp which then replicates the viral genomic ANAs into negative strand ANAs”,”sentencekey”:”sentence:PMC302072.xml:{8YG}:11",”title”:”Heterogeneous nuclear ribonucleoprotein A1 regulates RNA synthesis of a cytoplasmic virus”}]}


샤드 ID가 있는 문장 키가 있거나 docker logs -f rgcluster에서 "캐시 키"를 가져옵니다. 한 가지 더 로그에서 해시태그에 해당하는 샤드의 포트를 알아내는 것입니다(샤드 ID라고도 함, 중괄호 안에 있는 항목 – 이 {8YG}와 같이 export_load 스크립트의 출력에도 동일하게 표시됩니다.

통화가 작동하는지 확인합니다.

redis-cli -c -p **30003** -h 127.0.0.1 get “bertqa **{8YG}** _PMC302072.xml: **{8YG}** :10_Who performs viral transmission among adults”


그런 다음 벤치마크를 실행합니다.

redis-benchmark -p 30004 -h 127.0.0.1 -n 10 get “bertqa{356}_PMC126080.xml:{356}:1_Who performs viral transmission among adults”


-n = 횟수.

추가하다

– CSV 형식으로 출력하려는 ​​경우 csv

– 정밀도 3 – ms 단위로 더 많은 소수를 원하는 경우

벤치마킹 도구에 대한 추가 정보https://redis.io/topics/benchmarks

redis-utils가 로컬에 설치되어 있지 않은 경우 다음을 통해 동일하게 실행할 수 있습니다.

docker exec -it rgcluster /bin/sh -c “redis-benchmark -r 10000 -n 10000 PING”


플랫폼에는 20개의 기사, 8개의 Redis 노드 = 4개의 마스터 + 4개의 슬레이브만 있으므로 관련성이 좋지 않으며 많은 메모리가 필요하지 않습니다.

이 배포를 최적화하는 방법에는 여러 가지가 있습니다. 예를 들어 FP16 양자화 및 ONNX 런타임을 추가하면 이script가 좋은 출발점이 될 것입니다.

좋은 웹페이지 즐겨찾기