윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 문화,취미
DeepSeek R1 로컬에서 실행

딥 시크 R1 을 Python vLLM 을 사용해 로컬에서 실행해 보았다. DeepSeek-R1-Distill-Qwen-1.5B 모델을 사용했는데, 이 모델은 DeepSeek R1 에서 Distill 된 모델중 가장 작은 모델로, 수학 모델이다. 한글을 잘 인식하질 못해서 영어로 질문했다. 인터넷에서 영문 수학 문제를 검색해 문의해보았다.

인터넷을 찾아보면 한글 지원하는 모델도 쉽게 구할 수 있고, 7B 모델만 되어도 한글 잘 인식한다고 한다. 하지만 필자의 사양에서는 못 돌린다. 그래서 INT8 으로 양자화된 모델을 찾고 있기도 하다.

서버 사양은 Ubuntu 22.04, i7-7700K, 32GB, RTX 2060 12G 이다. 아래와 같이 실행했다.

$ mkdir DeepSeek-R1-Distill-Qwen-1.5B
$ cd DeepSeek-R1-Distill-Qwen-1.5B
$ python3 -m venv venv
$ . venv/bin/activate
(venv) $ pip install vllm
(venv) $ vi run.py
from vllm import LLM, SamplingParams

llm = LLM(
    model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
    dtype="half",
    max_model_len=8_000
)

sampling_params = SamplingParams(
    temperature=0.5,
    max_tokens=8_000
)

prompts = [
    """The day before yesterday I was 25. The next year I will be 28. This is true only one day in a year. What day is my Birthday?"""
]

conversations = [
    [{"role": "user", "content": x}] for x in prompts
]

outputs = llm.chat(conversations, sampling_params=sampling_params)

for output in outputs:
    print(output.outputs[0].text)
(venv) $ python run.py

실행 결과는 아래와 같다. 보기좋게 편집되어있다. 질문은 생일을 맞추는 문제인데, "2일 전에는 25살, 내년에는 28살"일 때 생일을 묻는 문제로, 생일은 12월 31일이다. 정확하게 맞췄다. 약 25초 정도 걸렸다. VRAM 사용량은 약 9.5GB 정도 된다. (nvidia-smi 으로 측정)

(venv) $ python run.py
INFO 02-00 18:51:00 __init__.py:183] Automatically detected platform cuda.
WARNING 02-00 18:51:02 config.py:2368] Casting torch.bfloat16 to torch.float16.
INFO 02-00 18:51:07 config.py:526] This model supports multiple tasks: ...
INFO 02-00 18:51:07 llm_engine.py:232] Initializing a V0 LLM engine (v0.7.1) ...
INFO 02-00 18:51:08 cuda.py:184] Cannot use FlashAttention-2 backend for Volta and Turing GPUs.
INFO 02-00 18:51:08 cuda.py:232] Using XFormers backend.
INFO 02-00 18:51:09 model_runner.py:1111] Starting to load model
deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B...
INFO 02-00 18:51:09 weight_utils.py:251] Using model weights format ['*.safetensors']
INFO 02-00 18:51:10 weight_utils.py:296] No model.safetensors.index.json found in remote.
Loading safetensors checkpoint shards: 0% Completed | 0/1 [00:00<?, ?it/s]
Loading safetensors checkpoint shards: 100% Completed | 1/1 [00:00<00:00, 1.06it/s]
Loading safetensors checkpoint shards: 100% Completed | 1/1 [00:00<00:00, 1.06it/s]

INFO 02-00 18:51:11 model_runner.py:1116] Loading model weights took 3.3460 GB
INFO 02-00 18:51:12 worker.py:266] Memory profiling takes 1.05 seconds
INFO 02-00 18:51:12 worker.py:266] the current vLLM instance can use
total_gpu_memory (11.55GiB) x gpu_memory_utilization (0.90) = 10.40GiB
INFO 02-00 18:51:12 worker.py:266] model weights take 3.35GiB;
non_torch_memory takes 0.04GiB; PyTorch activation peak memory takes 1.41GiB;
the rest of the memory reserved for KV Cache is 5.60GiB.
INFO 02-00 18:51:12 executor_base.py:108] # CUDA blocks: 13097, # CPU blocks: 9362
INFO 02-00 18:51:12 executor_base.py:113] Maximum concurrency for 8000 tokens per request: 26.19x
INFO 02-00 18:51:14 model_runner.py:1435] Capturing cudagraphs for decoding.
This may lead to unexpected consequences if the model is not static.
To run the model in eager mode, set 'enforce_eager=True' or use '--enforce-eager' in the CLI.
If out-of-memory error occurs during cudagraph capture,
consider decreasing `gpu_memory_utilization` or switching to eager mode.
You can also reduce the `max_num_seqs` as needed to decrease memory usage.
Capturing CUDA graph shapes: 100%|█████████████| 35/35 [00:09<00:00, 3.63it/s]
INFO 02-00 18:51:24 model_runner.py:1563] Graph capturing finished in 10 secs, took 0.19 GiB
INFO 02-00 18:51:24 llm_engine.py:429] init engine (profile, create kv cache, warmup model)
took 13.48 seconds
INFO 02-00 18:51:24 chat_utils.py:330] Detected the chat template content format to be 'string'.
You can set `--chat-template-content-format` to override this.
Processed prompts: 100%|███████████████████████
[00:04<00:00, 4.14s/it, est. speed input: 9.66 toks/s, output: 81.16 toks/s]
<think>
To determine the day of the birthday, I start by analyzing the information given.

First, it's stated that the day before yesterday, the person was 25.
This means that yesterday was the birthday day, and today is the day after birthday.

Next, it's mentioned that the next year, the person will be 28.
This implies that the current age is 25 plus 1, which is 26.

Since the person will be 28 in the next year, their birthday must be on December 31st.
This is because the next year's birthday will occur on the same date,
and the age will increase by one year.

Therefore, the birthday is December 31st.
</think>

To determine the day of your birthday, let's analyze the information step by step:

1. **Day Before Yesterday:**
- You were **25** years old the day before yesterday.
- This means **yesterday** was your birthday day.

2. **Next Year:**
- You will be **28** years old in the next year.
- If you are currently 26 years old, your birthday will be on **December 31st** because:
- **Today** is **December 31st**.
- **Tomorrow** will be **January 1st**, and you'll turn **27**.
- **Next Year** (two years from now) you'll be **28** years old.

**Conclusion:**

Your birthday is on **\boxed{December 31st}**.

Think 태그에 보면 사고의 흐름을 볼 수 있다. 이런게 나오긴 한다 정도로 생각하면 된다. 정답은 맞췄지만 논리적 사고를 한다기 보다는 문장의 흐름, 패턴을 검색해 유추한다고 생각한다.
글쓴시간
분류 기술,IT
DeepSeek R1

DeepSeek R1는 중국의 DeepSeek 에서 개발한 LLM 모델입니다. 쉽게 말하면 ChatGPT 같이 사용할 수 있는 AI 라고 생각하면 됩니다. 요즘에 주목받는 AI인데요, 그 이유중 하나가 성능이 좋고 무었보다 오픈소스이기 때문입니다.

사용자 삽입 이미지

성능이 좋다는건 사용자가 원하는 답을 잘 내어준다는 의미입니다. 들리는 말에 의하면 OpenAI 의 ChatGPT o1 보다 더 좋다는 말이 있네요.

사용자 삽입 이미지

DeepSeek R1 벤치마크.


하지만 저에게 무었보다 좋은건 오픈소스라는 점 때문입니다. 이정도 성능의 모델을 오픈 소스로 풀 거라고는 생각 못했습니다. 오픈 소스로 풀린다고 해서, 당장 제가 가진 PC에서 돌려보거나 할 수는 없겠습니다만, 일단 오픈소스라는게 가장 좋아보이네요. 몇몇 사용기가 올라온걸 보면 꽤 괜찮다는것 같습니다. AI 에서 중요한 것 중 하나가 개방성인데, 거대 LLM 을 오픈하는건 중국이 미국보다 먼저 했네요.

비용이 많이 들어가는 RLHF(Reinforcement Learning from Human Feedback, 인간의 피드백에 의한 강화 학습), SFT(Supervisor Fine Tuning, 감독자에 의한 파인 튜닝)을 사용하지 않고, RL(Reinforcement Learning, 강화 학습) 만을 사용했다고 합니다. 그래서 비용이 줄었다고 하네요.  이게 대단한게 RL 만으로는 한계가 있어서 RLHF, SFT 를 사용했던건데, 다시 RL 만으로도 된다는걸 보여주는 거라고 합니다. 물론 RL 만으로 학습한게 티가 난다고 합니다만, 어느 정도일지는 사용자마다 다르겠죠. 어쨋던 대단하긴 합니다.

사용자 삽입 이미지

또한 MOE(Mixture of Experts, 전문가 혼합) 기법을 사용해 특정 주제에 맞는 부분만 활성화 시켜 연산시키기 때문에 훈련과 추론시 사용하는 메모리를 줄였고, MLA(Multi-head Latent Attention) 를 사용해 키-값을 처리해 메모리를 더 줄였습니다. 마지막으로 nVidia CUDA에서 사용하는 PTX(Parallel Thread xecution)를 적극적으로 사용해서 성능을 향상시켰습니다. PTX 는 일종의 하드웨어 독립적인 언어로, CUDA 보다도 더 저수준의 언어입니다. PTX 는 일종의 GPU용 어셈블러이긴 하지만 하드웨어 독립적입니다. (하드웨어 독립적이긴 하지만 nVidia 제품에만 사용됩니다. nVidia GPU 아키텍처에 독립적이라는 의미입니다. CUDA/PTX 를 사사용해 작성한 코드는 바이너리 코드로 변환되어 실행되는데 이 바이너리 코드를 SASS(Source and Assembly)라고 부릅니다. SASS 가 GPU에 의존적입니다)  PTX 를 사용한다는게 굉장히 어려운 일이기 때문에 CUDA 정도만 사용했었는데, 중국에서는 이걸 했나보네요.

사용자 삽입 이미지

또한, 아직 추정이긴 합니다만, Distilled(추출기법)도 사용했을거라고도 생각합니다. 학습된 모델의 추론 결과를 학습할 모델의 입력으로 사용하는걸 말합니다. 쉽게 말하면 ChatGPT 의 결과를 DeepSeek 의 입력으로 사용했다는 겁니다. (이런 방식은 ChatGPT 이용 약관 위반입니다) 기사를 보면 OpenAI 에서는 어느 정도 증거를 가지고 있는것 같이 보입니다.

중국에 대한 수출 제한으로 nVidia H100 을 사용하지 못하는 제약때문에 nVidia H800 (H100 의 중국 수출 판)을 사용할 수 밖에 없었는데, H800 이 가진 한계(칩 간 전송 데이터 폭이 H100 의 절반, FP64 성능은 많이 떨어지나 FP32, TP32, BF16, FP16 의 연산은 성능이 동일함)를 극복한걸로 보이네요. H800 이 H100 에 비해 그렇게 떨어지는것도 아니긴 하구요.

사용자 삽입 이미지

nVidia H100



사용하는 방법에는 여러가지가 있겠습니다만 제가 본건 nVidia 에서 배포한 TensorRT-LLM - Deepseek-v3 사용 방법입니다. 여기에서는 BF16을 사용할 걸 추천하는데, 이경우 GPU 메모리가 1.3TB 이상 되어야 합니다. 모델 파일만 650GB 정도 되어보이고 모델 파일은 FP8 으로 되어있는것 같네요. 게다가 현재는 Hopper 아키텍처에서만 작동한다고 합니다

생성형 AI 를 사용하는 때에도, 중국 아니면 일본, 미국에서 만든 LoRA 가 많이 올라옵니다. 중국이 특히 많구요, 우리나라도 제법 있긴 합니다만, 다수라고 보기엔 무리가 있습니다. 그나마 오노마에이아이 (Onoma.AI) 에서 만든 Illustrious XL(ILXL) 과, ILXL 기반으로 만든 NoobAI-XL 이 생성형 AI 에서는 제법 알아준다고나 할까요. 우리나라도 어서 LLM 이 공개되었으면 하네요. 누가 공개할지는 모르겠습니다만 말이죠.

로컬에서 실행하는 방법: DeepSeek R1 로컬에서 실행
글쓴시간
분류 기술,IT
GeForce 50 시리즈 발표

사용자 삽입 이미지


이번 CES 에서 nVidia 가 GeForce 50 시리즈를 발표했습니다. 코드명 블랙웰입니다. 우선 GeForce RTX 5080 이 먼저 나오고 이후에 다른 GPU 들도 순차적으로 나올 예정입니다.

- 가장 눈에 띄이는건 DLSS4 와 DLAA Multi Frame Generation 라는 신기술의 도입입니다. 응답속도를 줄이고, 프레임 보간을 4배로 해줍니다. 게임에서 초당 프레임이 60 fps 이 나온다면 DLSS4 와 Multi Frame Generation 를 사용해서 240 fps 까지 프레임 레이트를 올릴 수 있다는 거죠.

- 가격은 5090만 400달러 올라 1999 달러이고, 다른 제품은 동결입니다.

- 이번 부터 FP6 과 FP4 를 지원합니다.

- DLSS를 사용하지 않은 성능은 기존 동급의 기기와 거의 비슷할 거라고 합니다. 일단 스펙이 같고, 일부 스펙은 오히려 줄었습니다. 캐시가 늘긴 했지만 근본적으로 바뀐게 아니기 때문에 성능은 큰 향상은 없을걸로 생각합니다.  하지만 DLSS4 와 향상된 DLAA 를 게임에서 사용하면, 5070 은 4090 급의 성능을 내어줄거라고 하네요.

- 메모리는 조금 아쉽네요. 5090 에만 32GB 를 넣어주었습니다. 4090 은 24GB 이었으니 늘긴 했지만 다른 제품군에서는 전혀 늘지 않았네요. 이부분은 조금 아쉽습니다. 그래도 5090 에 32GB 를 넣어주는 바람에, RTX 5000 Ada Generation 의 가격이 떨어질걸로 예상합니다. 5090이 32GB 으로 나오면 이걸 살꺼라서요. 반대로 메모리를 많이 넣어주면 게임용이 아니라 AI용이 되기 때문에 가격이 오릅니다. 모 국가에서 대량으로 구매할거라서요. 여태까지 그래왔죠. 소비자가 실제 구매할 수 있는 가격이 어떻게 될지는 두고봐야할거 같네요.

지금 4060Ti 16GB 를 쓰고 있고 이후에는 24GB 아니면 32GB 메모리를 써야 한다고 생각하지만, 5090은 너무 비싸서 못 삽니다. 조금 기다리는거 외에는 방법이 없네요. 한 6개월 후, 그러니까 올 가을 쯤에는 5060을 볼 수 있으려나요.
글쓴시간
분류 이야기
근하신년

올해에는 해돋이를 보러 가지는 못하고 해서, 그림으로 대신한다. 2024년 만큼 우리나라에 다사다난했던 해도 없었던것 같다. 하지만 2025년에는 이 모든게 잘 해결되리라고 믿는다.

사용자 삽입 이미지

해를 바라보기만 하기 보다는 해를 향해 다가가는 모습이 더 어울는 한해가 되길.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 시사,사회
제주항공 2216편 활주로 이탈 사고

2024년 12월 29일 09시 03분(KST) 발생한 제주항공 2216편 활주로 이탈사고. 이로 인해 탑승인원 181명중 승무원 2명을 제외한 나머지 179명이 사망한 사고다. 무안공항에서 발생했다.

사용자 삽입 이미지

처음엔 주로 가는 커뮤니티 사이트에 "사고 영상"이라는 제목의 동영상을 본걸로 시작했다. 영상속의 비행기가 동체착륙하길래 동체착륙 잘 했네, 감속 안되네 라고 생각하고 있는 찰나, 영상은 비행기가 활주로 끝을 지나며 바로 벽에 부딪히며 끝났다. 영상을 보고 난 후 큰일이다 싶었고, 저기에 왜 벽이 있는건지에 대한 의문이 들긴했다. 이후에 이게 오늘 아침에 일어난 일이라는걸 알게 되었다.

원인은 버드 스트라이크로 인한 엔진 고장으로 추정. 하지만 필자의 생각엔 동체착륙을 잘 했음에도 불구하고 사망자가 많이 나온건 활주로 끝을 지나 너무 가까이에 있었던 콘크리트 벽 때문이라고 생각한다. 물론 이글을 쓰는 시점에서는 아직 조사중이기 때문에 최종 결론이 나오면 다시 이 글을 수정할 예정이다.

어쨌든 지금은 사고 원인 규명보다는 사고 수습이 먼저다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 코스튬 #1 1/2

우연히 그린 복장. 마음에 들었다. 무슨 복장이라고 해야할지는 모르겠다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


글쓴시간
분류 시사,사회
민주주의의 최후의 보루

사용자 삽입 이미지

민주주의 최후의 보루는 깨어있는 시민의 조직된 힘입니다.

노무현 대통령이 축사영상에서 이야기한 말입니다. 요즘에 가장 와 닿는 말이네요.

계엄이 일어났다가 해제되었지만 아직까지도 후폭풍은 가라앉지 않고 있습니다. 경제적으로는 최소 300조, 최대 900조 정도의 손실을 예상하고, 이 손실은 우리 오천만 국민들이 할부로 갚아나가야 할거라고 합니다. 에혀... 중국의 거센 추격을 떨쳐내기도 힘든데 이런 것까지 신경써야 할건지 모르겠네요.

사용자 삽입 이미지

그리고 한가지 더 이야기 하고 싶습니다. 저는 쿠데타 실패의 가장 큰 원인이 바로 "교육"이라고 생각합니다. 요즘에는 학교에서 5.18 이나 12.12 에 대해 배우고, 당시의 참상에 대해 배우고 있습니다. 군인은 국민을 향해 총을 겨누면 안된다는 걸 배우죠. 제가 중/고등학생 때에는 배우지 않은 내용입니다. 그리고 권력은 국민에게서 나오고 영원한 권력은 없다, 독재는 없다는 걸 알려주죠. 5.18을 일으킨 주범은 결국 사형을 선고 받은것도 알고 있습니다. 즉 군인이라 해도 불법적인 명령에 따를필요 없다는걸 알고 있고, 무었이 불법적인것인지 정확히 이해하고 있습니다. 오직 그들만이 젊은 군인들이 그 명령에 따를리가 없다는걸 이해하지 못한거 같네요.

사용자 삽입 이미지
글쓴시간
분류 기술,IT
nVidia GB200 NVL72

GB200 의 이야기는 많은데 구체적으로 어떤건지는 잘 몰라서 찾아봤습니다. GB200이 칩을 이야기하는게 아닌거 같아서 찾아본겁니다.

B200 은 nVidia 의 최신 GPU 칩의 모델 이름입니다. 이 칩의 코드명이 Blackwell 입니다.

사용자 삽입 이미지

nVidia B200


GB200 은 1개의 Grace CPU 와 2개의 B200 으로 이루어진 일종의 보드입니다. 아래와 같이 생겼죠. 그런데 이걸 "Grace Blackwell Superchip" 이라고 부릅니다. Chip 이라는 단어때문에 이게 보드인지 칩인지 계속 혼동되었네요.

사용자 삽입 이미지

nVidia GB200 (Grace Blackwell Superchip)


이걸 NVLink 을 사용해 36개 연결해 총 72 개의 Blackwell GPU 을 내장한게 GB200 NVL72 입니다. NVLink 는 칩과 칩을 연결해주는 고속 인터커넥트 기술입니다.

사용자 삽입 이미지

nVidia GB200 NVL72


스펙은 아래와 같습니다. FP16 이 360PFLOPS 라는게 인상깊네요. 여기에 그 유명한 HBM3e 가 들어갑니다. 하나 가지고는 싶습니다.

사용자 삽입 이미지

스펙에는 안 나와있지만 GB200 NVL72의 TDP 가 140kW 으로 알려져 있습니다. 보통의 1U 서버 1대의 소비전력이 1kW 정도이고 1Rack(24U) 를 모두 채운다고 해도 24kW 입니다. 2Rack 을 사용하는 GB200 NVL72 라 해도, 소비전력이 140kW 라면 매우 높긴 하네요. 그래도 이전 세대보다 전성비는 좋습니다.
글쓴시간
분류 시사,사회
계엄

2024년 12월 3일 22시 27분 비상 계엄이 선포되었습니다. 살다살다 계엄 선포가 된 시대에도 살아보네요. 얼마나 빨리 수습될지는 모르겠습니다만 참 많은걸 생각하게 해줍니다. 이게 그냥 그냥 넘어갈 수 있는 문제가 아니었나 보네요.

계엄(Martial law) 은 행정 및 사법권을 대통령이 임명한 계엄사령관이 행사하는 제도를 말합니다. 입법권은 안 넘김니다.

우리나라에서 마지막 계엄은 1979년 10월 27일에 발효되었었습니다. 10.26으로 인해 발효되었죠. 이후 45년만이네요.

2024.12.03 22:27 비상 계엄 선포
2024.12.03 23:00 계엄사령부 포고령 1호 발표
2024.12.03 23:48 국회 위로 군용 헬기가 가는게 카메라에 잡혔네요.
2024.12.04 00:33 제418회 국회(정기회) 제15차 본회의 시작
2024.12.04 00:34 군인들이 창문을 깨고 국회에 진입하는게 화면에 나왔군요.
2024.12.04 01:01 제418회 국회(정기회) 제15차 본회의에서 "비상계엄 해제 요구 결의안"을 가결했습니다. 출석 190 찬성 190으로요. 헌법에 따라 대통령은 계엄을 즉시 해제해야 한다고 하네요. 그래도 민주적인 시스템이 살아있다는게 다행이긴 하네요. 155.7 분간의 계엄이었네요.
2024.12.04 04:27 계엄 해제 선포
2024.12.14 17:00 대통령(윤석열) 탄핵소추안 가결

사용자 삽입 이미지

비상계엄 해제 요구 결의안 가결


----

국회에 진입한 군인들은 1공수여단 이라는 이야기가 있네요. 탄창 띠 색으로 봐선 실탄이 아닌 훈련용 탄인걸로 생각된다고 하네요.

야당 의원들이 국회의사당 근처에서 회식중이었다고 합니다. 그래서 빨리 모일 수 있었다고 하네요.

3개월즘 전에 계엄 이야기 나왔을대 설마 하겠어 했는데 진짜로 했네요. 상상도 못했습니다.

----

BBC 속보 나왔습니다.

사용자 삽입 이미지