brunch

You can make anything
by writing

C.S.Lewis

by 무명 May 20. 2020

[AWS/EC2]cpu로 bert서빙서버 돌리기

ㅠㅠ

[배경]

- elasticsearch와 bert-serving-server를 이용해서 새 검색시스템을 구축하려고 함. 

- 고민했던 로직은 많았음, 시스템에는 lambda로 어떻게 구현해보느냐 / 서빙서버를 만드느냐 

- 로직에는 tf serving server를 쓰거나 여러 bert serving server 프레임워크?들을 돌려보느냐 , 그냥 쌩으로 bert serving server 를 돌려보느냐, aws 에서 돌릴거니 sagemaker 를 써볼거냐..

- 아무래도 bert가 제일 성능이 좋고, 원하는 결과가 나오고, 원하는 방향의 트레이닝모델도 있고, 구글의 가호?를 지금도 받고 있고, 시스템 구축만 해놓으면 모델만 바꿔끼거나, 여건이 된다면 가지고있는 데이터셋들로 트레이닝/튜닝해서 모델을 만들어 끼울수도 있음. 제일 좋은 선택지.


[참고자료]

https://github.com/google-research/bert

https://pypi.org/project/bert-serving-server/

설치


https://tfhub.dev/s?q=bert

- 처음에 lambda 에서 돌려볼 생각을 했을때 tf.hub에서 bert 모델 과 같은 text-embedding 모델을 불러와 파이썬 스크립트를 돌리는 방향을 삽질했었는데.. 사실 결정적으로 lambda 에 package들이 250mb 까지 밖에 안올라가서 적절하지 않은 선택이었음. s3를 이용하거나 등등의 대안이 있긴한데, 무겁고, 오래걸리고, tf나 tf를 돌리기 위한 numpy나 es와 통신을 위한 api lib를 한 번에 올리고 돌릴 수 없었음... 


- 여기서 원하는 모델 받아서 ec2에 올리면 된다


https://aws.amazon.com/ko/sagemaker/pricing/instance-types/

sagemaker ml 인스턴스 유형


https://aws.amazon.com/ko/ec2/pricing/on-demand/

ec2 요금들, 징글징글함

처음에 t2.micro로 여러 삽질하다가 t2.medium으로 바꿈(메모리 문제 안생기도록)





[실행 명령어]

https://bert-as-service.readthedocs.io/en/latest/section/faq.html#can-i-run-the-server-side-on-cpu-only-machine

뒤에 -model_dir 로 돌릴 모델 경로를 지정해주는걸 잊지 말도록



[결과]

ㅠㅠ 이 문구를 보기 위해서 얼마나 많은 삽질들을 했던가..

매거진의 이전글 elastic cloud를 사용하면서 느낀 불편한 점
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari