python23 [Project-버버두] 개발기 #2 : 개발 4월부터 6월까지 가계부 서비스 버버두(Budget Buddy 너두? 나두!)를 개발했다.처음 진행하는 사이드 프로젝트였기에 개발기를 남긴다.개발기는 1. 기획, 2. 개발, 3. 서빙 4. 우여곡절 순으로 포스팅하겠다.본 포스팅은 2. 개발에 해당한다. 목차1. RnR 정의2. 카톡 챗봇 기능 확인3. 기능 개발4. 기능 시연 1. RnR 정의 개발을 수행하는 인원은 총 2명이었다.NLP 연구원인 나, 안드로이드 개발자(편의상 `안개`라 부르겠다.) 둘이서 진행했다.가장 먼저 정했던건 어떤 프로그램 언어를 사용할지, 각자의 RnR 및 협업 방식은 어떻게 할지였다. 프로그램 언어는 감사하게도 안개님이 배려해주셔서 Python 으로 정했다.각자의 RnR 의 경우, 아래와 같이 나눴다.나: 고객의 Text .. 2024. 9. 23. 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. [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. [Package] 파이썬 코드 패키지화 → setup.py 들어가는 글 파이썬을 사용하다 보면 사용하고자 하는 패키지를 다운로드 할 때 'pip install {package_name}' 를 써 본적이 있을 것이다. middle level user의 경우, 패키지 내부를 수정해서 자신이 원하는 목적에 맞게 수정한 경우가 많을 것이다. 이때 자세히 살펴보는 코드가 github으로 배포된 코드인데 간혹 setup.py 스크립트를 보고 '이게 뭐지..?' 생각했다면 본 포스팅을 살펴보길 권장한다. 모듈과 패키지 setup.py를 살펴보기 앞서 모듈과 패키지가 무엇인지 소개하고자 한다. 소개 글은 ( link )의 글을 인용했다. 프로그래밍은 문제를 해결하는 과정을 프로그래밍 언어로 표현한 것이다. 그리고 대부분의 문제들은 다시 반복되며 우리는 이를 해결하기 위해 한 .. 2022. 7. 11. 이전 1 2 3 다음 반응형