전체 글 21

[Docker] Docker Network / Container와 외부의 통신은 어떻게 할까

도커 컨테이너를 실행하면, 172.17.0.X로 시작하는 IP가 순차적으로 할당되는 것을 볼 수 있습니다. 이때 IP는 내부 IP로, 외부와의 통신은 불가능하게 됩니다.컨테이너와 컨테이너, 컨테이너와 호스트 등 서로 통신을 위해, 도커의 네트워크 구조를 살펴보고자 합니다. Container의 veth 인터페이스도커는 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성하며, 이 인터페이스의 이름은 veth입니다.(=virtual eth)veth 인터페이스는 사용자가 직접 생성할 필요는 없으며, 컨테이너가 생성될 때 도커 엔진이 자동으로 생성합니다.첫번째 컨테이너를 띄우면, veth0(172.17.0.2) 인터페이스가 생성되고, 또 다른 컨테이너를 띄우면 vet..

MLOps 2024.11.02

[NFS] NFS Server, Client를 Container 형태로 동작시키기

MLOps 플랫폼을 구축하는 도중, 학습에 사용될 대용량 데이터, 모델 등을 저장해야 할 필요성을 느끼게 되었습니다.여러 네트워크 스토리지 시스템 중, Network File System을 사용하기 위한 테스트를 진행하였습니다.  Network File System은 NFS Server와 NFS Client로 나뉨두가지 모두 서로 다른 머신에서 Container 형태로 사용하는 테스트 진행NFS Server : Container를 띄울 시 volume mount한 경로(home/nfs-server/mount)에 모든 FIle을 저장NFS Server Container 이미지: erichough/nfs-serverNFS Client : NFS Server와 mount한 host machine의 경로(ho..

MLOps 2024.10.14

[CI/CD] Github Actions, AWS CodeDeploy, EC2와 Docker를 활용한 CI/CD 구축 | EC2에 FastAPI 배포

💡 이 글은 마켓디자이너스(튜터링,링고라) MLOps Engineer 인턴 생활을 하며 직접 적용 & 공부했던 기록입니다.저도 시행착오를 겪었기에, 많은 도움이 되고자 따라오기 쉽게 작성하였습니다! 감사합니다 :)0. 배포 프로세스 자동화CI/CD를 구축하기 전, 파이썬으로 작성된 파일을 FastAPI로 아래와 같이 수동으로 배포를 진행했었습니다.개인 브랜치에서 코드수정main으로 PR & mergeAWS EC2 접속Docker Container 띄워서 Fastapi로 Python 소스코드 배포하지만 매번 이 작업을 하기에는 번거로울 뿐더러, 실수가 발생할 수 있습니다.그래서 드디어 파이썬 CI/CD 구축을 하기로 마음먹고, Github Actions와 AWS CodeDeploy로 CI/CD를 진행하였..

MLOps 2024.07.01

[MLOps] AWS SageMaker를 사용한 ML 모델 서빙 도전기(2) - Serverless Inference

1. Serverless Inference란?AWS Serverless Inference 소개 공식 블로그모델이 수신하는 추론 요청의 볼륨에 따라 컴퓨팅 용량을 자동으로 프로비저닝하고, 크기를 조정하고, 끕니다. 따라서 유휴 시간을 제외하고 추론 코드를 실행하는 데 필요한 컴퓨팅 시간과 처리된 데이터 양에 대해서만 비용을 지불하면 됩니다. 이름 그대로 지속적으로 GPU를 항상 켜두는 것이 아니라, 요청이 들어올 때만 GPU 자원을 사용하게끔 하는 방식입니다.항상 켜두는 비용보다 Serverless 방식을 적용하면 비용이 적게 나가게 됩니다.그러면 비용이 적게 나간다는 장점만 있진 않습니다. 제가 직접 경험한 바로는 Inference 속도가 기본 추론 방식보다 늦어지게 됩니다. Inference laten..

MLOps 2024.06.12

[2024 Google Solution Challenge] Top100 진출 후기, ML Engineer로서 솔챌에 참가하다

안녕하세요! 저는 GDSC Konkuk AI/ML Core Member로 활동하고 있는 학생 겸 ML Engineer 인턴입니다 ! 😊GDSC 멤버 4명과 함께 2024 Google Solution Challenge에 참가하였고, 운이 좋게도 Top 100에 선정되어 멘토링을 받은 후 Resubmission을 진행하였습니다.솔챌을 진행하며 느낀 점을 전달하고자 합니다.   0. 들어가며 ML Engineer로 솔챌을 참가하기에 막막한 점이 많았습니다. 자신이 어떤 주제로 이러한 부분에서 AI를 사용하면 좋을 것 같다고 어필하지 않는 한, AI를 사용하지 않고도 충분히 서비스를 만들 수 있기 때문에 팀 빌딩이 어려울 것이라고 생각했습니다.  그래서 저는 한달 전부터 주제를 생각해 왔고, 이전 솔챌 Top..

대외활동 2024.06.08

[MLOps] AWS SageMaker를 사용한 ML 모델 서빙 도전기!

💡 이 글은 마켓디자이너스(튜터링) MLOps Engineering 인턴 생활을 하며 직접 적용 & 공부했던 기록입니다.앱 서비스에 대한 간단한 소개를 하자면, 현재 튜터링이라는 어플은 외국인과의 실시간 소통이 가능하도록 만들어진 영어 교육 플랫폼입니다. 여기서 영어(한국어) 교육 AI tutor를 개발하고 있습니다.따라서 언급하는 모든 ML Model은 Language Model, 혹은 LLM입니다. (Vision은 하지 않았습니다!) 0. 모델 서빙 클라우드 플랫폼 선택 과정자사에서 ML 모델을 Finetuning 하는 일은 협업하는 연구실 측에서 담당해주고 있습니다.물론 자사에서도 자체모델을 Finetuning하지만, 그 수가 적습니다.저희는 Finetuning된 모델을 huggingface로 공..

MLOps 2024.04.08

[Paper review] BLIP : Bootstraping Language-Image pre-training for unified vision-language understanding and generation 논문 리뷰

ICML, 2022, ciation 632 BLIP : Bootstraping Language-Image pre-training for unified vision-language understanding and generation Introduction vision-language pre-training의 두가지 기존 한계점 모델 관점 : 기존 VL-pretraining 모델들은 대부분 encoder-based거나 encoder-decoder based이다. 구조적 한계로 인해 특정 task(image understanding, text generation)등에만 강한 모습을 보였다.encoder-decoder model : image-text retrieval task에 약함 encoder-based ..

Deep Learning 2023.09.05

[삽질로그] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xeb in position 21 wandb: ERROR Internal wandb error: file data was not synced

아무리 찾아봐도 나와 비슷한 에러가 났던 사람들은 없고,,, wandb relogin을 해도 안되다가,,, 에러 메세지를 유심히 보다가 해결! UnicodeDecodeError: 'utf-8' codec can't decode byte 0xeb in position 21: invalid continuation byte wandb: ERROR Internal wandb error: file data was not synced File "/usr/local/lib/python3.9/dist-packages/wandb/sdk/internal/internal_util.py", line 49, in run self._run() File "/usr/local/lib/python3.9/dist-packages/wan..

삽질로그 2023.08.10

[DL] Transfer learning이란?

Transfer learning 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것을 의미한다. 보통 학습시키고자 하는 대상에 대해 데이터가 적을 때 사용한다. 전이학습(Transfer learning)의 단계 pre-trained 모델을 불러온다. 모델의 parameter를 Freeze한다. 새로운 layer들을 freeze된 곳 위에 쌓는다. 기존 freeze layer들이 학습된 것을 기반으로 새로운 데이터셋에 맞추어 freeze 되지 않은 것을 학습한다. 새로운 layer만을 학습 시킨다. Fine-tuning 기존의 모델 구조와 미리 학습된(Pre-trained) 가중치를 기반으로, 내가 하려는 task에 맞게 가중치를 업데이트하는 것..

Deep Learning 2023.07.23

[이코테] 플로이드 워셜 알고리즘, 미래 도시 풀이

플로이드 워셜 알고리즘 최단 거리 정보 저장 다익스트라 : 1차원 리스트 플로이드 : 모든 노드에 대해 다른 모든 노드로 가는 최단거리 정보를 담아야 하기 때문에 2차원 리스트를 사용한다. → O(N^2) 알고리즘 다익스트라 : 그리디 알고리즘 플로이드 : 다이나믹 프로그래밍, N번만큼의 단계를 반복하며 ‘점화식에 맞게’ 2차원 리스트를 갱신한다. INF = int(1e9) # 무한을 의미하는 값으로 10억을 설정 # 노드의 개수 및 간선의 개수를 입력받기 n = int(input()) m = int(input()) # 2차원 리스트(그래프 표현)를 만들고, 모든 값을 무한으로 초기화 graph = [[INF] * (n + 1) for _ in range(n + 1)] # 자기 자신에서 자기 자신으로 가..

코딩테스트 2023.04.02