paint-brush
GPU가 부족한 사람들을 위해 300달러짜리 AI 컴퓨터를 만드는 방법~에 의해@zbruceli
6,605 판독값
6,605 판독값

GPU가 부족한 사람들을 위해 300달러짜리 AI 컴퓨터를 만드는 방법

~에 의해 Bruce Li12m2024/03/24
Read on Terminal Reader

너무 오래; 읽다

그러나 GPU가 부족한 우리에게 자체 AI 컴퓨터를 갖는 것은 값비싼 꿈인 것 같습니다. 맥북 M3 맥스? 3200달러, 아야! 엔비디아 4090? $1850; 얻을 수 있어도 아프다. 마이크로소프트 서피스 랩톱 6? 1200달러부터 시작하면 여전히 너무 많습니다. 유용한 AI 컴퓨터를 300달러에 구입할 수 있다고 말하면 어떻게 될까요? 관심 있는? 모니터, 키보드, 마우스는 직접 준비해야 합니다. 그리고 Linux 운영 체제, 드라이버, 미들웨어 및 구성에 대해 약간의 수정이 필요합니다.
featured image - GPU가 부족한 사람들을 위해 300달러짜리 AI 컴퓨터를 만드는 방법
Bruce Li HackerNoon profile picture


소개

오픈 소스 AI 모델을 우리 자신의 컴퓨터에서 로컬로 실행하면 개인 정보 보호, 끝없는 수정 가능성, 대기업으로부터의 자유를 얻을 수 있습니다. 그것은 거의 표현의 자유의 문제입니다.


그러나 GPU가 부족한 우리에게 자체 AI 컴퓨터를 갖는 것은 값비싼 꿈인 것 같습니다. 맥북 M3 맥스 ? 3200달러, 아야! 엔비디아 4090 ? $1850; 얻을 수 있어도 아프다. 마이크로소프트 서피스 랩탑 6 ? 1200달러부터 시작하면 여전히 너무 많습니다.


유용한 AI 컴퓨터를 300달러에 구입할 수 있다고 말하면 어떻게 될까요? 관심 있는? 모니터, 키보드, 마우스는 직접 준비해야 합니다. 그리고 Linux 운영 체제, 드라이버, 미들웨어 및 구성에 대해 약간의 수정이 필요합니다.


명확히 하자면, 우리는 대규모 생성 AI 모델을 "훈련"하거나 "미세 조정"하는 것에 대해 말하는 것이 아닙니다. 오픈 소스 LLM(예: 라마 2 7B) 로컬에서 다음을 사용하여 이미지를 생성할 수 있습니다. 안정적인 확산 .


이제 계속하겠습니다.

무엇이 좋고 저렴한 AI 컴퓨터를 만드는가?

zbruceli의 고속 상호 연결


가정용 AI 컴퓨터의 주요 사용 사례 중 하나가 실행되고 있다고 가정해 보겠습니다. 대규모 언어 모델 또는 LLM 추론. 이 작업은 CPU에서 모두 수행될 수 있으므로 실제로 GPU가 전혀 필요하지 않습니다. 라마.cpp 일반 CPU를 사용하여 매우 빠른 LLM 추론을 가능하게 하는 오픈 소스 소프트웨어입니다. 원래는 Apple M 시리즈 CPU가 탑재된 Macbook용으로 설계되었지만 Intel/AMD CPU에서도 작동합니다.


그러나 더 빠른 추론 속도를 위해서는 다음이 필요합니다. 그렇지 않으면 LLM이 한 번에 하나의 토큰을 뱉어내는 동안 손바닥에 머리카락이 자라는 것을 보는 것과 같을 것입니다.


  • 빠른 CPU-메모리 대역폭
  • 더 빠른 DRAM(적어도 DDR4, DDR5는 더 좋을 것입니다)
  • 많은 메모리(예: 최소 16GB), 특히 더 큰 모델(7B 이상)을 실행하려는 경우


Stable Diffusion을 사용하여 이미지를 생성하려면 GPU 성능이 필요합니다. 그러나 이를 위해 아주 멋진 GPU를 가질 필요는 없습니다. 이미 가정용 컴퓨터에 있는 통합 GPU를 활용할 수 있습니다.


  1. CPU, GPU 및 고속 메모리가 통합된 M1/M2/M3 CPU가 장착된 모든 Mac(정말 훌륭하지만 가격 때문에 이 특정 기사에서는 제외됩니다)


  2. AMD APU(예: Ryzen 7 5700U)는 예산 친화적인 미니 PC를 위해 CPU와 GPU를 통합합니다. 이것이 이 글의 초점이 될 것입니다.


  3. CPU와 GPU도 통합한 Intel CPU(예: Core i5-1135G7). 전체 미니 PC에 대한 예산인 300달러보다 약간 높지만 독자들이 직접 더 자세히 살펴볼 수 있습니다.

그렇다면 300달러짜리 AI 컴퓨터는 무엇일까요?

다음 사양을 갖춘 AMD 기반 미니 PC는 일반적으로 300달러 미만에 판매됩니다. 저는 특정 브랜드를 추천하고 싶지 않으므로 직접 검색해 보세요.

  • AMD 라이젠 7 5800H(8C/16T, 최대 4.4GHz)
  • 16GB RAM DDR4(32GB 권장)
  • 512GB NVME M.2 SSD


나는 약간의 돈을 펑펑 써서 32GB RAM과 1TB SSD를 갖춘 400달러 모델을 선택했습니다(다른 모든 것은 동일함). 주된 이유는 오픈 소스 LLM에 대해 연구하고 있으며 Stable Difusion을 실행하는 것 외에도 더 큰 모델을 실행하고 싶기 때문입니다. 하지만 당신은 300달러짜리 컴퓨터로 이 기사에 나오는 거의 모든 것을 할 수 있을 것이다.

준비 1: 충분한 iGPU 메모리 할당

다음과 같은 AMD APU의 경우 라이젠 7 5800H , 메모리는 CPU와 iGPU(통합 GPU) 간에 공유됩니다. 제 경우에는 총 RAM이 32GB인데, iGPU의 기본 할당량은 3GB에 불과했습니다! 이는 컴퓨터마다 다르며 제조 과정에서 BIOS에서 구성됩니다.


주요 사용 사례에 따라 이를 변경해야 합니다.

  1. LLM 추론만 실행해야 한다면 이 전체 준비 단계를 건너뛸 수 있습니다. LLM 추론은 CPU만 사용해야 하므로 더 큰 LLM 모델을 실행할 수 있도록 CPU용으로 대부분의 RAM을 저장해야 합니다.


  2. 실행해야 하는 경우 안정적인 확산 , 특히 SDXL (1024x1024), 시스템이 허용하는 만큼 iGPU에 RAM을 할당해야 합니다(일반적으로 전체 RAM의 절반).


제 경우에는 동일한 미니 PC에서 Stable Diffusion XL과 LLM 추론을 모두 실행하고 싶습니다. 따라서 GPU에 (총 32GB 중) 16GB를 할당하고 싶습니다.


BIOS에서 설정을 변경하면 이를 달성할 수 있습니다. 일반적으로 상한이 있으며 기본 설정은 상한보다 훨씬 낮을 수 있습니다. 내 컴퓨터에서 상한은 16GB, 즉 사용 가능한 전체 RAM의 절반이었습니다.

좋은 BIOS

컴퓨터의 BIOS가 이러한 설정을 지원하는 경우 원하는 번호로 변경하십시오. 내 BIOS에는 그러한 설정이 없습니다.

불량한 BIOS: Universal AMD 도구를 사용하세요

BIOS에 이 설정이 없으면 "AMD Ryzen™ APU에서 GPU 메모리 할당을 잠금 해제하시겠습니까?"라는 지침을 따르십시오. 윈스턴 마(Winston Ma) 시도해 봤는데 잘 작동해서 이제 16GB VRAM이 생겼습니다.


https://winstonhyypia.medium.com/amd-apu-how-to-modify-the-dedicated-gpu-memory-e27b75905056

준비 2: 드라이버 및 미들웨어 설치

zbruceli의 복잡한 구성

별 정렬

AMD의 ROCm (Radeon Open Compute 플랫폼), Nvidia와 비슷함 쿠다 는 개발자가 ADM GPU의 성능을 활용할 수 있도록 지원하는 드라이버 및 미들웨어 제품군입니다. 그리고 일반적으로 AI 애플리케이션은 GPU 가속을 얻으려면 ROCm이 필요합니다.


AMD의 ROCm을 설치하고 작동시키려면 GPU 하드웨어, Linux 배포판, 커널, Python, HIP 드라이버, ROCm 라이브러리 및 pytorch의 버전이 호환되는지 확인해야 합니다. 고통을 최소화하고 최초 성공 가능성을 최대화하려면 권장되고 검증된 조합을 따르십시오.

전제 조건

호환되는 Linux OS 및 커널 버전을 구하고 설치하려면 다음 링크를 확인하세요. 처음에는 제가 즐겨 사용하는 Linux OS와 기본 Linux 커널만 설치하는 실수를 저질렀고, 호환성 문제를 해결하기 위해 뒤로 걸어가는 것이 큰 고통이었습니다. 공식적으로 지원되는 조합을 사용하면 이러한 어려움을 피할 수 있습니다.


https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html


AMD ROCm OS 호환성 차트

ROCm 설치

https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html


전체 설치가 잘 완료되면 rocminfo 입력하면 다음과 같은 내용이 표시됩니다(강조 표시된 노란색으로 가장 관련 있는 부분만 잘라냈습니다).

ROCk module is loaded

=====================

HSA System Attributes

=====================

Runtime Version: 1.1

System Timestamp Freq.: 1000.000000MHz

Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)

Machine Model: LARGE

System Endianness: LITTLE

Mwaitx: DISABLED

DMAbuf Support: YES


==========

HSA Agents

==========

*******

Agent 1

*******

Name: AMD Ryzen 7 5800H with Radeon Graphics

Uuid: CPU-XX

Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics

Vendor Name: CPU

  

Pool Info:

Pool 1

Segment: GLOBAL; FLAGS: COARSE GRAINED

Size: 16777216(0x1000000) KB

Python 환경

Python 종속성은 매우 까다로울 수 있으므로 적절한 환경을 설정하는 것이 좋습니다. 다음 중 하나를 사용할 수 있습니다. 콘다 또는 벤브 이 목적을 위해.

  • source venv/bin/activate
  • conda activate llm

파이토치

https://pytorch.org/get-started/locally/


Pytorch 호환성 차트

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7

HSA 덮어쓰기

다음은 통합 그래픽이 있는 APU에만 해당됩니다. ROCm에서 공식적으로 지원하지는 않지만 다음은 작동하는 것으로 입증되었습니다.


export HSA_OVERRIDE_GFX_VERSION=9.0.0

확인 방법

이제 모든 복잡한 단계를 마친 후 ROCm이 Torch와 작동하는지 테스트해 보겠습니다. 그리고 ROCm이 Pytorch의 목적을 위해 CUDA인 것처럼 "가장"하고 있음을 알 수 있습니다.


https://rocm.docs.amd.com/en/latest/how_to/pytorch_install/pytorch_install.html#test-the-pytorch-installation


python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'

Success


python3 -c 'import torch; print(torch.cuda.is_available())'

True

LLM 추론

zbruceli의 챗봇과 대화하기


새로 구성된 300달러짜리 AI 컴퓨터를 위한 쉬운 것부터 시작해 보겠습니다. 대규모 언어 모델을 로컬에서 실행하는 것입니다. 인기 있는 오픈 소스 모드 중 하나를 선택할 수 있습니다. 라마 2 채팅에 최적화된 7B 매개변수를 사용합니다.


또한 다음에서 소규모 LLM을 시도해 볼 수도 있습니다. 미스트랄 , QWen , 미풍 , 그리고 비쿠나 . UC Berkeley의 매우 유용한 "chatbot arena 리더보드"에서 더 좋은 품질의 LLM을 찾을 수 있습니다. LMSYS 연구소 .


https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard

라마.cpp

우리는 사용할 것입니다 라마.cpp , 처음에는 CPU에 최적화되어 나중에 GPU도 지원합니다. 내 경험에 따르면 LLM 추론은 CPU에서 잘 작동하며 300달러짜리 AI 시스템에 통합된 것과 같은 적당한 GPU로는 얻을 수 있는 것이 거의 없습니다.


https://github.com/ggerganov/llama.cpp


먼저 wgetgit 설치해야 합니다. 그런 다음 단계에 따라 llama.cpp를 컴파일하고 설치합니다.


sudo apt-get install build-essential

git clone https://github.com/ggerganov/llama.cpp.git

cd llama.cpp

make

모델 가중치 다운로드

값비싼 GPU가 장착된 클라우드 서버 대신 저렴한 시스템에서 LLM을 실행하려면 RAM 공간에 맞도록 모델의 "압축된" 버전을 사용해야 합니다. 간단한 예를 들어 LLaMA-2 7B 모델에는 각각 float16(2바이트)으로 표시되는 7B 매개변수가 있습니다.


  • Float 16: 14B 바이트 또는 14GB로 8GB RAM에 맞지 않습니다.


  • 4비트로 양자화: 3.5B 바이트 또는 3.5GB가 이제 8GB RAM에 들어갈 수 있습니다.


또한 파일 형식은 다음과 같아야 합니다. gguf . 그래서. 이 예에서는 이 파일의 가중치를 다운로드해야 합니다.

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q4_0.gguf

AMD 미니 PC에서 테스트

먼저 AMD 미니PC에서 테스트해본 결과 초당 약 10개의 토큰을 달성했습니다. 이것은 실제로 꽤 괜찮은 수준이며, 너무 많이 기다리지 않고도 LLM과 채팅을 계속할 수 있습니다.


시스템 구성:

  • AMD 라이젠 5800H
  • 32GB RAM


명령줄 지침:

./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock


llama_print_timings: load time = 661.10 ms

llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)

llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)

llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)

llama_print_timings: total time = 64114.27 ms

Intel Mini PC에서 테스트

다음으로 Intel 미니 PC에서 테스트한 결과 초당 약 1.5개의 토큰을 달성했습니다. 유익한 채팅 세션을 진행하기에는 속도가 너무 느립니다. Intel N5105는 분명히 AMD 5800H보다 약하기 때문에 이는 공정한 비교가 아닙니다. 하지만 그게 내가 갖고 있는 유일한 인텔 미니 PC다. 더 강력한 Intel CPU(예: Core i5-1135G7)를 사용하는 경우 비슷한 결과를 얻을 수 있습니다. 아래 댓글로 결과를 보고해 주세요.


시스템 구성:

  • 11세대 4코어 N5105(최대 2.9Ghz) 4코어 4스레드
  • 16GB RAM(iGPU용 2GB VRAM)


./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock


llama_print_timings: load time = 14490.05 ms

llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)

llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)

llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)

안정적인 확산

Zbruceli의 AI로 용을 그리는 아티스트

설치

https://github.com/AUTOMATIC1111/stable-diffusion-webui


AMD ROCm에 관해서는 이 페이지에도 주목하세요.

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs

빠른 시작

export HSA_OVERRIDE_GFX_VERSION=9.0.0

source venv/bin/activate

./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half

안정확산 1.5 테스트

./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half


테스트 1

  • 프롬프트: "숲속의 말"


  • 단계: 20, 샘플러: DDIM, CFG 규모: 7, 시드: 519288240, 크기: 512x512, 모델 해시: 6ce0161689, 모델: v1-5-pruned-emaonly, 버전: v1.6.0


  • 소요 시간: 1분 8.3초

안정 확산 XL 1.0 테스트

SDXL(최대 해상도 1024x1024)은 최소 12GB VRAM을 권장하므로 iGPU에 16GB VRAM을 할당하려면 준비 1 단계를 완료해야 합니다. 따라서 이 작업은 400달러짜리 미니 PC에서만 가능합니다.

./webui.sh --upcast-sampling

테스트 1:

  • 프롬프트: "숲속의 말"


  • 단계: 20, 샘플러: DDIM, CFG 스케일: 7, 시드: 1102941451, 크기: 1024x768, 모델 해시: 31e35c80fc, 모델: sd_xl_base_1.0, 버전: v1.6.0


  • 소요 시간: 7분 41초


테스트 2:

  • 프롬프트: "빨간 후드티를 입고 숲에서 말을 타고 있는 젊은 테일러 스위프트"


  • 음성 프롬프트: 기형, 기형, 눈 기형, 치아 기형, 손가락 기형, 얼굴 기형, 손 기형, 기형


  • 단계: 20, 샘플러: DDIM, CFG 스케일: 7, 시드: 2960206663, 크기: 1024x1024, 모델 해시: 31e35c80fc, 모델: sd_xl_base_1.0, 버전: v1.6.0


  • 소요 시간: 6분 12.3초

Windows 11 및 AMD/directml

이 문서에서는 Linux 운영 체제에 중점을 두고 있지만 Windows에서도 Stable Diffusion을 사용할 수 있습니다. 내 실험은 다음과 같습니다.

https://github.com/lshqqytiger/stable-diffusion-webui-directml


  • 먼저 Python 3.10.6을 설치해야 합니다.


  • Python 3.10.6 디렉터를 PATH에 추가합니다.



  • git 및 git clone repo 설치


  • 파일 탐색기에서 webui-user.bat를 실행합니다.


테스트 1:

  • 프롬프트: "숲속의 말"
  • 설정: DPM++ 2M Karras, 512x512, 샘플링 단계 20
  • 소요 시간: 1분 19초

결론

zbruceli의 개인 장치에 대한 오픈 소스 AI 모델


그렇다면 새로운 300달러짜리 미니 PC에서 자신만의 생성 AI 모델을 실행하면서 즐거운 시간을 보내고 계신가요? 니가하길 바래.


개인용 장치에서 실행되는 오픈 소스 AI 모델은 개발자에게 가장 흥미로운 영역 중 하나입니다. 왜냐하면 우리 중 누구도 기본 모델을 실제로 훈련할 수 있는 대규모 GPU 풀을 갖고 있지 않기 때문입니다. 이를 통해 데이터 개인정보 보호를 유지하면서 매우 스마트한 차세대 앱을 구현할 수 있습니다.


다음은 무엇입니까?

  • 더 작은 임베디드 장치(예: Raspberry Pi)에서 실행하세요.


  • 스마트폰에서 실행하세요(llama.cpp는 iOS와 Android를 지원합니다)


그리고 AI, 오픈 소스, 온디바이스를 활용해 즐거운 시간을 보내세요!