---
# System prepended metadata

title: Solr와 연동하는 DeepQA API

---

# Solr와 연동하는 DeepQA API

Solr 검색엔진과 연동하는 DeepQA 백엔드 실행 안내입니다.

- GPU 서버 내 API 코드 위치: /home/aicc/mrcqna/mrcqna_package/api/mrcqna_api/apis/mrcqna_solr.py

- 응답 형식 수정 방법: mrcqna_solr.py 파일 내 “is_return_paragraph”, “is_return_sentence”에 따라 응답 형식이 결정됩니다.
```
predict_result = bert_mrc.predict(question=question,
                                  context=context['CONTEXT'],
                                  top_k=top_k,
                                  # is_return_paragraph=True,
                                  # is_return_sentence=True,
                                  doc_stride=457,
                                  max_query_length=52)
```

## config 설정
- API config 파일 위치: /home/aicc/mrcqna/mrcqna_package/api/mrcqna_api/setting/config.py
```
# ip, port 설정
HOST_IP = "0.0.0.0"
PORT = "5000"
SOLR_IP = "127.0.0.1:8983"

# url prefix 설정
API_URL_PREFIX = "/bert" # default
```



## docker를 통한 실행
- docker를 통한 API 실행:
API Dockerfile 위치: /data/aitech21/aicc/bert_mrc/docker/uwsgi_bert
```
# docker 이미지 빌드
cd /data/aitech21/aicc/bert_mrc/docker/uwsgi_bert
docker image build -t mrc/api:1.1 .

# 첫번째 서버 실행
docker container run -d --expose 80 -e LC_ALL=C.UTF-8 -e NVIDIA_VISIBLE_DEVICES=0 -v /home/aicc:/home/aicc -v /data/aitech21/aicc:/data/aitech21/aicc -it --rm --name mrc_uwsgi1 mrc/api:1.1 /bin/bash
docker exec -it  mrc_uwsgi1 /bin/bash
uwsgi /home/aicc/mrcqna/mrcqna_package/api/mrcqna_api/uwsgi.ini

# 두번째 서버 실행
docker container run -d --expose 80 -e LC_ALL=C.UTF-8 -e NVIDIA_VISIBLE_DEVICES=1 -v /home/aicc:/home/aicc -v /data/aitech21/aicc:/data/aitech21/aicc -it --rm --name mrc_uwsgi2 mrc/api:1.1 /bin/bash
docker exec -it  mrc_uwsgi2 /bin/bash
uwsgi /home/aicc/mrcqna/mrcqna_package/api/mrcqna_api/uwsgi.ini
# 첫번째 서버만 실행시켜도 동작합니다.
# 2개의 서버를 실행시키면 로드밸런싱이 동작합니다.
```

- docker를 통한 nginx 실행
nginx Dockerfile 위치: /data/aitech21/aicc/bert_mrc/docker/nginx_bert
```
# docker 이미지 빌드
cd /data/aitech21/aicc/bert_mrc/docker/nginx_bert
docker image build -t api/nginx_bert .

# nginx 실행
docker container run -d -p 5000:5000 --link mrc_uwsgi1:uwsgi_bert1 --link mrc_uwsgi2:uwsgi_bert2 --rm --name nginx_bert api/nginx_bert
```
nginx와 연결되는 container명: mrc_uwsgi1, mrc_uwsgi2

## 접속 url
- DeepQA swagger UI url: http://10.214.35.224:5000/bert/
