All

    LLM 애플리케이션 개발 훑어보기 - LangChain #2 LangChain Expression Language (LCEL)

    LLM 애플리케이션 개발 훑어보기 - LangChain #2 LangChain Expression Language (LCEL)

    LangChain Experssion Language(LCEL) LangChain Expression Language(LCEL)은 체인을 쉽게 구성할 수 있는 선언적 방식입니다. LCEL은 가장 간단한 "프롬프트 + LLM" 체인부터 가장 복잡한 체인까지 코드 변경 없이 프로토타입을 프로덕션에 적용하는 것을 지원하도록 설계되었습니다. LangChain 공식 문서에서는 LCEL을 사용해야 하는 이유를 다음과 같이 소개하고 있습니다. Streaming support: LCEL로 체인을 구축하면 첫 번째 토큰에 도달하는 시간(첫 번째 출력 청크가 나올 때까지 경과한 시간)을 최대한 단축할 수 있습니다. Async support: LCEL로 구축된 모든 체인은 동기식 API(예: 프로토타이핑 중 Jupyter ..

    LLM 애플리케이션 개발 훑어보기 - LangChain #1 Intro 및 QuickStart

    LLM 애플리케이션 개발 훑어보기 - LangChain #1 Intro 및 QuickStart

    Introduction LangChain은 인공 지능(AI) 및 그 기계 학습 하위 집합으로 작업하는 소프트웨어 개발자가 대규모 언어 모델을 다른 외부 구성 요소와 결합하여 LLM 기반 애플리케이션을 개발할 수 있는 오픈 소스 프레임워크입니다. LangChain의 목표는 OpenAI의 GPT-3.5 및 GPT-4와 같은 강력한 LLM을 다양한 외부 데이터 소스에 연결하여 자연어 처리(NLP) 애플리케이션의 이점을 활용하고 생성하는 것입니다. 파이썬, 자바스크립트 또는 타입스크립트 프로그래밍 언어에 대한 경험이 있는 개발자, 소프트웨어 엔지니어, 데이터 과학자는 해당 언어로 제공되는 LangChain의 패키지를 사용할 수 있습니다. LangChain은 2022년 공동 창립자인 해리슨 체이스와 안쿠시 골라에..

    S-LoRA: Serving Thousands of Concurrent LoRA Adapters

    S-LoRA: Serving Thousands of Concurrent LoRA Adapters

    github: https://github.com/S-LoRA/S-LoRA paper: https://arxiv.org/abs/2311.03285 pretrain-then-finetune LLM 배포에는 일반적으로 pretrain-then-finetune 패러다임이 채택됩니다. Low-Rank Adaptation (LoRA)는 parameter-efficient fine-tuning(PEFT) method로써, base model을 여러 tasks에 적용하는 데 자주 사용되며, 그 결과 하나의 base model에서 파생된 상당한 양의 LoRA adapter가 생성됩니다. 이러한 패러다임은 서비스를 제공하는 동안 batched inference에 상당한 기회 요인을 제공합니다. 이러한 기회를 활용하기 위해..

    LLM 인퍼런스 훑어보기 (6) - quantization

    LLM 인퍼런스 훑어보기 (6) - quantization

    이전 포스트에서는 LLM 인퍼런스에서 batching 기법의 중요성을 알아보았고, GPU util을 극대화하기 위한 batching 기법인 continuous batching에 대해서 알아보았습니다. continuous batching에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 것 같습니다. LLM 인퍼런스 훑어보기 (5) - continuous batching 이전 포스트에서는 kernel funsion에 대해 알아보는 내용을 다뤘었습니다. 커널 퓨전의 의미, 구현 방법, 그리고 활용 사례에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 dytis.tistory.com 오늘은 LLM 인퍼런스에서 메모리 효율화 기법 중 하나인 quantization에 대해서 ..

    LLM 인퍼런스 훑어보기 (5) - continuous batching

    LLM 인퍼런스 훑어보기 (5) - continuous batching

    이전 포스트에서는 kernel funsion에 대해 알아보는 내용을 다뤘었습니다. 커널 퓨전의 의미, 구현 방법, 그리고 활용 사례에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 것 같습니다. LLM 인퍼런스 훑어보기 (4) - kernel fusion 이전 포스트에서는 KV Cache에 대해 더 깊게 알아보는 내용을 다뤘었습니다. 주로 Hugging Face Transformers의 구현체와 vLLM 프로젝트의 구현체를 탐구해 보았죠. 더 자세한 내용은 아래 링크에서 확인하 dytis.tistory.com 오늘은 LLM 인퍼런스에서 Batching 기법에 대해서 다루고자 합니다. Batch ML에서 "batch"는 일반적으로 훈련 데이터를 나누는 단위를 나타냅니다. 전체 데이터셋을..

    LLM 인퍼런스 훑어보기 (4) - kernel fusion

    LLM 인퍼런스 훑어보기 (4) - kernel fusion

    이전 포스트에서는 KV Cache에 대해 더 깊게 알아보는 내용을 다뤘었습니다. 주로 Hugging Face Transformers의 구현체와 vLLM 프로젝트의 구현체를 탐구해 보았죠. 더 자세한 내용은 아래 링크에서 확인하실 수 있습니다: LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive) 이전 포스트에서는 트랜스포머의 구조와 어텐션 메커니즘이 무엇인지 다루었다. 그리고 LLM 인퍼런스에서 KV Cache가 무엇이며, 왜 도입되어 사용되는지에 대해서 다뤘다. 지난 포스트는 아래 링 dytis.tistory.com 오늘은 LLM 인퍼런스 가속화 방법 중 하나로 알려진 "커널 퓨전 (kernel fusion)"에 대해 알아보려고 합니다. Kernel fusion GPU는 주로 다양한..

    torch.distributed.init_process_group

    https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group Distributed communication package - torch.distributed — PyTorch 2.0 documentation Shortcuts pytorch.org 문서에 나와있는 설명으로는 default process group을 초기화하고, distributed package 또한 초기화하는 동작을 한다. process group을 초기화하는 방법에는 크게 두가지의 주된 방법이 있다: store, rank, world_size를 명시적으로 입력하는 방법 peer들을 어떻게/어디서 찾을지에 대해 나타내는 init_method를 입..

    LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive)

    LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive)

    이전 포스트에서는 트랜스포머의 구조와 어텐션 메커니즘이 무엇인지 다루었다. 그리고 LLM 인퍼런스에서 KV Cache가 무엇이며, 왜 도입되어 사용되는지에 대해서 다뤘다. 지난 포스트는 아래 링크를 참조하자. LLM 인퍼런스 훑어보기 (2) - KV Cache 앞선 포스트에서는 Large Language Model (LLM) 인퍼런스의 중요성과 왜 우리는 LLM을 효율적으로 활용해야 하는지를 알아보았다. 더불어, LLM을 이용한 문장 생성은 autoregressive generation이며, 해당 생성 dytis.tistory.com 이번 포스트에서는 다른 가속 방법을 다루려고 했었는데, KV Cache에 대해서 좀 더 deep dive 해보는 내용을 작성해보려고 한다. deep dive 내용은 llam..

    LLM 인퍼런스 훑어보기 (2) - KV Cache

    LLM 인퍼런스 훑어보기 (2) - KV Cache

    앞선 포스트에서는 Large Language Model (LLM) 인퍼런스의 중요성과 왜 우리는 LLM을 효율적으로 활용해야 하는지를 알아보았다. 더불어, LLM을 이용한 문장 생성은 autoregressive generation이며, 해당 생성 과정에서 사용할 수 있는 다양한 디코딩 전략을 소개하였다. 지난 포스트는 아래 링크를 참조하자. https://dytis.tistory.com/53 LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성 인공 지능과 기계 학습 기술의 발전은 현대 사회에 혁명적인 변화를 가져왔다. 특히, Large Language Model(LLM)과 같은 최신 기술은 자연어 처리 및 이해 분야에서 차별화된 성능을 보이며, 다양한 분 dytis.tistory.com 이번 ..

    LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성

    LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성

    인공 지능과 머신 러닝의 급속한 발전은 특히 자연어 처리 분야에서 주목할 만한 진전을 이루었습니다. 이 분야에서 Large Language Model(LLM)은 그 우수한 성능으로 다양한 서비스와 애플리케이션의 혁신을 가능하게 했습니다. 이러한 모델들은 방대한 양의 데이터와 복잡한 네트워크 구조를 바탕으로 학습되어, 상당한 컴퓨팅 자원과 시간을 필요로 합니다.LLM은 언어 이해와 생성 작업에서 뛰어난 결과를 보여주며, 이를 가능하게 하는 기술적 구현은 특히 중요합니다. 실제 서비스에 LLM을 적용하기 위해서는 모델의 인퍼런스가 효율적이어야 하며, 이는 컴퓨팅 자원을 적절히 관리하고 최적화하는 과정을 포함합니다. 효율성과 효과성은 이 모델을 경제적으로 운용하면서도 최대의 성능을 발휘하도록 하는 핵심 요소입..