[기술] GPU와 CUDA (1) - GPU의 연산 개념

GPU에 관하여 GPU는 방대한 수학 연산을 가속하기 위해 설계된 전자 회로이다. GPU는 CPU에 비해 수천 개의 작은 코어(모델 및 사용 목적에 따라 다름)를 가지고 있기 때문에 GPU 아키텍처는 병렬 처리에 최적화되어 있다. GPU는 여러 작업을 동시에 처리할 수 있으며 그래픽 및 수학적 워크로드에서 더 빠르다. GPU vs CPU GPU vs CPU 기본적인 GPU 구조 Flynn’s Taxanomy 플린의 분류법은 스탠포드 대학교의 마이클 J. 플린이 컴퓨터 아키텍처를 분류한 것이다. 플린의 분류법의 기본 개념은 간단하다. 계산은 순차적으로(한 번에 하나의 스트림) 또는 병렬로(한 번에 여러 스트림) 처리할 수 있는 두 개의 스트림(데이터 및 명령어 스트림)으로 구성된다. 두 개의 데이터 스트림과 이를 처리할 수 있는 두 가지 방법은 플린의 분류법에서 4가지 범주로 이어진다. ...

[개발] Mac에서 llama.cpp를 사용하여 Orion-14B-Chat을 추론하기

Orion-14B 본 포스팅은 Orion-14B-Chat을 기준으로 한다. llama.cpp Orion-14B 모델 Orion-14B-Chat in HuggingFace 추론 환경 CMake 설치 brew install cmake llama.cpp 환경 클론 git clone https://github.com/ggerganov/llama.cpp cd llama.cpp llama.cpp 환경 빌드 mkdir build cd build cmake .. cmake --build . --config Release Orion-14B 모델 다운로드 허깅페이스의 Orion-14B 모델을 허깅페이스 API로 로컬에 다운로드하려면 아래의 코드를 실행해야 한다. import torch from transformers import AutoModelForCausalLM, AutoTokenizer from transformers.generation.utils import GenerationConfig tokenizer = AutoTokenizer.from_pretrained("OrionStarAI/Orion-14B", use_fast=False, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( "OrionStarAI/Orion-14B", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True) model.generation_config = GenerationConfig.from_pretrained("OrionStarAI/Orion-14B") messages = [{"role": "user", "content": "Hello, what is your name? "}] response = model.chat(tokenizer, messages, streaming=False) print(response) 이를 위해 앞서 FlashAttention 설치를 해야한다. 그런데 CUDA 의존성 때문에 Mac에서는 설치 오류가 발생한다. (이제 Orion-14B-Chat 모델 기준으로) 설명해본다. ...