ㅠㅠ
- 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/
설치
- 처음에 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으로 바꿈(메모리 문제 안생기도록)
뒤에 -model_dir 로 돌릴 모델 경로를 지정해주는걸 잊지 말도록
ㅠㅠ 이 문구를 보기 위해서 얼마나 많은 삽질들을 했던가..