개발 이야기/Machine learning
Stable Diffusion 3 ONNX Export 트러블 슈팅
Stable Diffusion 3 ONNX Export 트러블 슈팅
2024.11.24오늘은 업무 중 발생했던 Stable Diffusion 3 모델의 ONNX Export 과정에서 발생했던 이슈와 해결 방법에 대해서 공유해보려고 합니다. Qualcomm의 하드웨어에 AI/ML 모델을 배포하기 위해서 Qualcomm® Neural Processing SDK를 활용하는데요. 해당 SDK에서 제공하는 도구 중 Converter는 여러 가지 프레임워크 (e.g., ONNX, TensorFlow, ...) 를 지원하지만, 대체로 ONNX를 많이 활용하고 있습니다. 아마도 요즘 대부분의 Researcher들이 익숙한 딥러닝 프레임워크가 PyTorch고 PyTorch에서 ONNX Export는 간편하게 지원하는 것이 첫 번째 이유일 것이라고 짐작하며, 두 번째로는 ONNX를 활용함으로써 얻을 수 있..
Full Stack Optimization of Transformer Inference: a Survey (1)
Full Stack Optimization of Transformer Inference: a Survey (1)
2024.04.14최근 회사 내부 스터디에서 진행하고 발표했던 서베이 논문에 대해서 정리하려고 합니다. 서베이 논문답게 분량이 꽤 있으므로 몇 편에 나눠서 글을 작성할 계획이며, 대체로 앞에서 다루는 Transformer 구조와 백그라운드에 대해서는 잘 알고 계시는 분들이 많으므로 상대적으로 생소한 3장 Hardware Design부터 진행합니다 (다만 요청이 있거나 생각이 바뀌면 1~2장에 대해서도 추가 작성할 계획은 있습니다). 글 작성의 기본이 되는 내은 Full Stack Optimization of Transformer Inference: a Survey ( https://arxiv.org/abs/2302.14017 )이며 일부 Figure는 다른 논문에서 가져올 수 있습니다 사내에서 이 논문이 선택된 배경은 다..
PyTorch 모델 프로파일링 및 성능 개선기
PyTorch 모델 프로파일링 및 성능 개선기
2024.03.03Motivation 저희 팀은 전사적으로 사용하는 경량화 소프트웨어를 개발하고 있습니다. 여러 도메인의 팀 (자율주행, XR, LLM 등)이 사용하다 보니 여러 가지 문의가 항상 생기는데요. 최근에 Computer Vision 모델을 경량화 소프트웨어를 이용해서 전처리 후 다시 작업을 할 때 원본 모델에서보다 너무 느리다는 문의가 들어왔습니다. 보고된 Forward pass의 수행 시간이 거의 15배 이상 차이가 났었는데요. 그 과정에 대해서 어떻게 해결할 수 있었는지 예제를 통해서 소개하려고 합니다. Profiling result 처음에는 해당 모델이 GPU로 실행되지 않고, CPU로 실행되고 있다던가 흔히 저지르기 쉬운 실수에 대해서 먼저 체크를 했었는데요. 여러 가지로 검토했을 때 그런 단순한 실수..
외부 API가 의도한 대로 동작을 안 해요 (2) - contextlib 활용
외부 API가 의도한 대로 동작을 안 해요 (2) - contextlib 활용
2023.12.24문제 정의 및 현재 상황 이전 포스트에서 얘기한 것처럼 외부 API의 호출 전후로 그래프의 개형이 바뀌는 문제의 원인은 파악했는데요. 이제 그러면 우리가 원하는 동작을 하도록 코드를 수정하거나 개선을 할 차례입니다. 하고 싶은 일은 외부 API가 의존하는 onnxsim.simplify에 skipped_optimizers를 전달하는 것인데요. 자세한 내용 서술에 앞서서 전체적인 호출자 로직과 3rd Party API의 예제 구현체는 다음과 같습니다 호출자 로직 import onnx from transformers import AutoTokenizer, GPTNeoForCausalLM from third_party_api import prepare_model if __name__ == "__main__": ..
외부 API가 의도한 대로 동작을 안 해요 (1) - ONNX Simplifier
외부 API가 의도한 대로 동작을 안 해요 (1) - ONNX Simplifier
2023.12.10Motivation 올해 초부터 저희 팀은 LLM이나 Stable Diffusion과 같은 대규모 모델을 경량화하는 작업을 시작했는데요. 저희는 대규모 모델을 실제 하드웨어에 배포하기까지의 스텝 중 앞부분인 Quantization Simulation을 주로 담당하고 있었습니다. Simulation이 끝난 이후 실제 하드웨어에 배포하기 위해서는 여러 가지 추가적인 과정(Compile, Optimization, ...)이 필요한데요. 저희는 이 과정을 다른 팀이 제공하는 API를 호출하는 구조로 테스트하고 있습니다. 외부 API를 호출하고 난 결과를 테스트나 시각화했을 때 이상한 점이 발견됐는데요. Transformer 기반의 모델을, API를 호출해서 결과를 받으면 Transformer의 전형적인 구조인 ..
AI for Everyone Week1
AI for Everyone Week1
2019.03.10AI-for-Everyone-week1-a4611943-749d-4acd-b210-1a2a373559cc AI for Everyone week1 Introduction 2030년까지 $13 trillion 가치 소프트웨어 분야 뿐만 아니라 여행, 물류, 전장 사업 등 다양한 분야에 영향 ANI → 최근 몇 년간 많은 발전을 결과로 보여줌 (이미지 인식, 음성 합성 등) ANI / AGI가 아니라 약 인공지능 / 강 인공지능으로 표현하는 경우도 있음 Machine learning Supervised Learning 교과서나 튜토리얼 등에서 가장 흔하게 볼 수 있는 Machine learning의 유형! 입력 (A)를 출력 (B)로 가장 잘 설명할 수 있는 관계 (또는 함수)를 찾는 것 프로그래밍을 통해 명..
Spark 환경에서 Sentiment analysis를 해보자 (1)
Spark 환경에서 Sentiment analysis를 해보자 (1)
2019.02.24spark-sentiment-analysis Spark 환경에서 Sentiment analysis를 해보자 (1) Sentiment Analysis는 자연 언어처리 필드에서 오랫동안 연구되어 온 주제입니다. 고전적인 방법 (Naive Bayes)부터 비교적 최근에 많이 사용하는 Neural Network 계열 방법까지 다양한 방법이 존재하는데요. 대용량 데이터가 쌓이고 있는 현재 Spark 환경에서 Sentiment Analysis를 End-to-End로 예제를 들어 진행하려고 합니다. 분량 조절을 위해 이번 포스트에서는 데이터의 전처리까지, 다음 포스트에서는 Classifier 생성 및 평가로 나눠서 포스트를 작성하겠습니다. 환경 Spark 2.3.2 Scala 2.11.x Zeppelin 0.8 In..
Keras에서 GPU 메모리 할당량 조절
Keras에서 GPU 메모리 할당량 조절
2016.11.18TensorFlow를 Backend로 사용하는 GPU Enabled Keras는 기본값이 모든 GPU Memory를 할당하는 것이다.혼자 쓰는 것이면 문제가 안 되겠지만, 연구실 구성원들과 같이 쓰는 서버이기 때문에 메모리 할당량을 조절하려고 검색을 하니 다음 두 링크를 찾을 수 있었다.https://groups.google.com/forum/#!topic/keras-users/MFUEY9P1sc8https://github.com/fchollet/keras/issues/1538
Keras로 Multi Layer Perceptron 구현하기
Keras로 Multi Layer Perceptron 구현하기
2016.05.10요새 가장 Hot한 Deep Learning 라이브러리는 아무래도 Tensorflow이고 또 많은 연구자들이 사용하고 있다. Keras는 Tensorflow의 Wrapper 라이브러리로 일관성 있는 인터페이스와 Tensorflow에는 미구현 상태인 많은 Deep Learning 관련 도구들이 구현되어있다(BatchNormalization, Xavier Initialization 등...) 이번 포스트에서는 유명한 MNIST 예제를 Multi Layer Perceptrone을 설계해서 성능을 측정해보겠습니다. ipython 파일의 포맷은 여기서 보실 수 있습니다. 해당 예제는 김성훈 교수님의 강의에서 Tensorflow로 구현된 것을 Keras로 구현해본 것입니다. 모듈 import 부분 MNIST 데이터..
Dim Reduction & Feature Selection
Dim Reduction & Feature Selection
2016.05.09이 게시물은 Geunho Lee님에 의해 번역된 게시물입니다. 번역된 게시물은 Geunho Lee님의 블로그에서도 확인하실 수 있으며, 여러분들도 번역 및 게시물 소장에 참여하실 수 있습니다. [Eng. ver.] 왜 feature가 필요할까? 머신러닝은 입력 데이터를 출력 데이터로 대응시켜주는 블랙박스라고 대략 설명할 수 있습니다. 이 매직박스는 입력 데이터의 함수인데 선형 또는 비선형의 형태를 가질 수 있는데, 우리는 훈련 데이터를 사용해서 이 함수를 학습하지만, 항상 잘 학습되지는 않습니다.예를 들어, 우리가 경기장의 관중 수를 입력으로 해서 해당 야구 경기의 결과를 알고 싶다고 합시다. 경기장의 관중 수만으로 경기의 결과를 정확하게 예측하는 것이 가능할까요? 아마도 관중 수 정보만으로는 경기 결과..