본문 바로가기

Python12

Triton Server 환경 구축하기 Triton Server 는 Deep Learning Model 을 Inference 하는데 GPU 자원을 최적으로 할당하여 서비스를 구축하기 편하게 해주는 환경이다. Torch, Tensorflow 와 같은 다양한 framework 를 지원하기 때문에 여러 종류의 모델을 하나의 Docker container 기반으로 배포할 수 있다. 즉, Triton Server 는 Docker container 기반의 Open-source inference serving software 라 할 수 있다. 본 포스팅에서는 실무자의 입장을 고려하여 Triton Server 환경을 구축하는 방법을 다룬다. 실무자의 상황을 고려하며 Docker Image 관리 및 Container 를 편하게 관리하는 노하우에 대해 소개하겠.. 2024. 2. 20.
NVIDIA Triton 에 대한 고찰 인공지능 모델을 서빙하기 위해 NVIDIA Triton 를 많이 사용한다. NVIDIA Triton 란 무엇인고, 왜 사용하는지, 어떻게 사용하는지에 대한 간단한 설명과 예시를 다룬다. NVIDIA Triton 란 무엇인가? 인공지능 모델은 딥러닝의 발전으로 점점 커지고 성능도 향상되고 있다. 하지만 그만큼 추론 속도는 느려지고 많은 리소스가 필요하다. 더 좋은 GPU 를 사용하면 효과를 볼 수 있지만 많은 비용이 들기 때문에 어떻게 인공지능 모델을 효율적으로 운영할 수 있는지 연구가 계속 되고 있다. 비용을 줄이기 위한 방법으로는 모델 경량화와 같이 인공지능 모델의 크기를 줄이는 방법부터 효율적인 추론을 위한 ONNX, TensorRT 변환 등 다양한 방법이 있다. ONNX, TensorRT 변환의 경.. 2023. 10. 29.
[창시모] DP vs DDP 정리 출처: better-tomorrow 님의 tistory 예전 포스팅으로 Multi-GPU 용어 관련 글을 썼다. 해당 글은 여기( link )를 참고하길 바란다. 필자의 글을 보면 마지막에 DP 방식의 학습과 DDP 방식의 학습을 비교 정리한다고 했었다. 그걸 이제 한다,,, DP와 DDP의 설명은 algopoolja님의 블로그를 참고하였다. 관련 글은 다음 링크를 참고하길 바란다. https://algopoolja.tistory.com/95 torch의 데이터 분산 연산(DP 와 DDP) torch parallelism Pytorch 를 사용해 모델을 학습하다 보면 여러가지 병렬화를 사용합니다. 병렬화를 사용하는 이유는 크게 2가지로 나눠볼 수 있습니다. 학습을 더 빨리 끝내기 위해 모델이 너무 커서 .. 2022. 11. 9.
SBERT → ONNX 변환 및 Test example 들어가며.. 지난 22년 7월 27일, ONNX 란 무엇인지에 관한 소개 글을 올렸었다. 해당 글은 본 블로그에서 항상 top-1 조회수를 차지했다. 필자 생각에는 많은 회사와 산업에서 인공지능 모델을 서빙하려 하기 때문에 많은 관심을 받았다고 생각한다. 이러한 관심에 힘입어 필자가 진행했던 Sentence-BERT 모델을 ONNX 변환시키는 간단한 예시를 포스팅하고자 한다. Sentence-BERT 특징 ONNX 변환 전, Sentence-BERT의 Input/Output 형태를 알아야 한다. 형태는 다음과 같다. Input: text (ex. '나는 어바웃타임 영화를 좋아합니다.') Output: n차원 vector (ex. [0.1754, 0.7749, ...] 보통 768 차원 사용) Input/.. 2022. 11. 9.
[창시모] unittest in python 들어가며,, git을 통해 모델링 개발을 하다보면 소스 코드의 파이프라인을 뜯어 보고 싶을 때가 있다. 전체 flow를 sequence하게 work하기보다는 모듈 단위로 구획을 나누어 확인해보고 싶은 경험이 다들 있을 것이다. 이때 중요한 건 각 모듈이 input 형태는 어떤지, output 형태는 어떤지 알고 있어야 한다는 점이다. 이를 통해 소스 코드 수정 및 업그레이드를 할 수 있다. 본 글에서 소개하는 기능은 파이썬의 단위 테스트인 unittest이다. DaleSeo 님의 블로그 글을 인용 + 필자의 의견을 종합하여 소개하고자 한다. 원본 글은 다음 링크를 확인하길 바란다. https://www.daleseo.com/python-unittest-testcase/#%EB%A7%88%EC%B9%98%.. 2022. 9. 5.
[Setting] jupyter notebook 원격 접속 들어가며,, 네트워크 설정 완료한 서버를 이용해 분석하기 위해 jupyter notebook 원격 접속이 가능하도록 세팅해야한다.(물론 local에서도 가능하다.) 세팅이 완료되면 해당 pc가 아닌 곳에서 원격 접속하여 python을 활용한 분석을 할 수 있다. 이때 버전 충돌 방지를 위해 docker container를 새로 만들어 진행할수도 있지만 그 부분은 생략한다. 본 포스팅에서는 어떻게 원격 접속을 할 수 있는지 그 방법에 대해 다뤄보겠다. 설치 과정 1. config 파일 생성 $jupyter notebook --generate-config. # /home/v2j/.jupyter/jupyter_notebook_config.py 생성시 경로 밑에 위와 같은 config.py 파일이 생성된다. 2.. 2022. 8. 19.
[class 기능 정리] 코딩을 깔끔하게 해주는 기능 Class 기능 정리 정적메소드 (@classmethod & @staticmethod) @classmethod - 첫번째 인자로 클래스를 입력 ex) 인스턴스 메소드는 인스턴스를 통해서 호출이 되고, 첫 번째 인자로 인스턴스 자신을 자동으로 전달합니다. 관습적으로 이 인수를 ‘self’라고 칭합니다. 클래스 메소드는 클래스를 통해서 호출이 되고 “@classmethod”라는 데코레이터로 정의합니다. 첫 번째 인자로는 클래스 자신이 자동으로 전달되고 이 인수를 관습적으로 ‘cls’라고 칭합니다. 스태틱 메소드는 앞서 설명한 두 메소드와는 틀리게 인스턴스나 클래스를 첫 번째 인자로 받지 않습니다. 스태틱 메소드는 클래스 안에서 정의되어 클래스 네임스페이스 안에는 있을뿐 일반 함수와 전혀 다를게 없습니다. 하.. 2022. 8. 12.
[Super] 상속에 사용하는 Super 함수 알아보기 들어가는 글 지난 포스팅에서는 상속(Inheritance)과 오버라이딩(Overriding)에 대해 알아봤었다. 관련된 링크는 아래 글을 참고하길 바란다. 본 포스팅에서는 객체 지향형 프로그램 언어에서 상속 시 많이 사용하는 Super 함수에 대해 알아보도록 하자. https://beeny-ds.tistory.com/23 [Overriding] 오버라이딩을 이용한 코드 수정 들어가는 글 Python 패키지를 사용하다보면 본인이 원하는 방식으로 class를 수정하고 싶을 때가 있다. 보통 pypi에서 직접 패키지를 수정하지만 git으로 내 패키지를 관리 한다면 dependency가 있는 beeny-ds.tistory.com Super 함수 Super 명령어는 상속 관계에서 상속의 대상인 부모 class를 .. 2022. 8. 3.
[Overriding] 오버라이딩을 이용한 코드 수정 들어가는 글 Python 패키지를 사용하다보면 본인이 원하는 방식으로 class를 수정하고 싶을 때가 있다. 보통 pypi에서 직접 패키지를 수정하지만 git으로 내 패키지를 관리 한다면 dependency가 있는 다른 패키지를 수정하여 사용하고 싶을 때 pypi에서 수정하는 건 비효율 적이다. (다수의 wheel 파일 생성 및 관리 필요하기 때문) 본 포스팅에서는 오버라이딩을 이용한 class 수정으로 위와 같은 니즈가 있을 때 어떻게 효율적으로 수정할 수 있는지, 그때의 이점은 무엇인지 알아보도록 하자. 상속(Inheritance) 상속이란 '뒤를 이음', '물려 받다' 라는 뜻으로, class에도 이런 개념을 적용할 수 있다. 어떤 class를 만들 때 다른 class의 기능을 그대로 가져올 수 있.. 2022. 8. 2.
[소개] ONNX 란? 들어가며.. Deep learning 모델을 서빙해 본 사람이라면 ONNX를 들어봤으리라 생각한다. ONNX는 다른 DNN 프레임워크 보다 추론 속도가 빠르고 성능도 거의 똑같이 유지된다. 그 외에도 여러 장점들이 존재하기 때문에 많은 데이터 사이언티스트 또는 데이터 분석가들은 ONNX에 대해 알아두면 큰 도움이 될 것이다. ONNX 란? ONNX는 Open Neural Network Exchange의 줄인 말로서 이름과 같이 다른 DNN 프레임워크 환경(ex Tensorflow, PyTorch, etc..)에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼이다. ps. ONNX 또한 DNN 프레임워크라고 부른다. ONNX는 다음과 같은 장점을 갖는다. 장점 ① : Framewo.. 2022. 7. 27.
반응형