paint-brush
Cách xây dựng một máy tính AI trị giá 300 USD cho người có GPU kémtừ tác giả@zbruceli
7,116 lượt đọc
7,116 lượt đọc

Cách xây dựng một máy tính AI trị giá 300 USD cho người có GPU kém

từ tác giả Bruce Li12m2024/03/24
Read on Terminal Reader

dài quá đọc không nổi

Tuy nhiên, đối với những người nghèo GPU như chúng tôi, việc có máy tính AI của riêng mình dường như là một giấc mơ đắt giá. Macbook M3Max? $3200, ôi! Nvidia 4090? $1850; điều đó thật đau đớn ngay cả khi bạn có thể có được một cái. Máy tính xách tay Microsoft Surface 6? Bắt đầu từ $1200, vẫn còn quá nhiều. Điều gì sẽ xảy ra nếu tôi nói với bạn rằng bạn có thể mua được một máy tính AI hữu ích với giá 300 đô la? Thú vị? Bạn cần phải cung cấp màn hình, bàn phím và chuột của riêng mình. Và bạn cần mày mò một chút về hệ điều hành, trình điều khiển, phần mềm trung gian và cấu hình Linux.
featured image - Cách xây dựng một máy tính AI trị giá 300 USD cho người có GPU kém
Bruce Li HackerNoon profile picture


giới thiệu

Việc chạy cục bộ các mô hình AI nguồn mở trên máy tính của chúng ta mang lại cho chúng ta sự riêng tư, khả năng mày mò vô tận và sự tự do khỏi các tập đoàn lớn. Nó gần như là vấn đề tự do ngôn luận.


Tuy nhiên, đối với những người nghèo GPU như chúng tôi, việc có máy tính AI của riêng mình dường như là một giấc mơ đắt giá. Macbook M3 Max ? $3200, ôi! Nvidia 4090 ? $1850; điều đó thật đau đớn ngay cả khi bạn có thể có được một cái. Máy tính xách tay Microsoft Surface 6 ? Bắt đầu từ $1200, vẫn còn quá nhiều.


Điều gì sẽ xảy ra nếu tôi nói với bạn rằng bạn có thể mua được một máy tính AI hữu ích với giá 300 đô la? Thú vị? Bạn cần phải cung cấp màn hình, bàn phím và chuột của riêng mình. Và bạn cần mày mò một chút về hệ điều hành, trình điều khiển, phần mềm trung gian và cấu hình Linux.


Để làm rõ, chúng tôi KHÔNG nói về các mô hình AI tổng hợp lớn “đào tạo” hoặc “tinh chỉnh”. Chúng tôi sẽ tập trung vào cách chạy LLM nguồn mở (các mô hình ngôn ngữ lớn như LLama 2 7B) cục bộ, cũng như tạo hình ảnh bằng cách sử dụng Khuếch tán ổn định .


Bây giờ chúng ta hãy tiếp tục.

Điều gì tạo nên một chiếc máy tính AI tốt (và rẻ)?

Kết nối tốc độ cao của zbruceli


Giả sử một trong những trường hợp sử dụng chính của máy tính AI gia đình đang chạy mô hình ngôn ngữ lớn hoặc suy luận LLM. Nhiệm vụ này thực sự không cần GPU vì tất cả có thể được thực hiện trong CPU. llama.cpp là một phần mềm nguồn mở cho phép suy luận LLM rất nhanh bằng CPU thông thường. Ban đầu nó được thiết kế cho Macbook với CPU Apple M-series, nhưng nó cũng hoạt động trên CPU Intel/AMD.


Tuy nhiên, bạn cần những điều sau để có tốc độ suy luận nhanh hơn. Nếu không, bạn sẽ giống như đang nhìn tóc mọc trên lòng bàn tay trong khi LLM phun ra từng mã thông báo một.


  • Băng thông CPU đến bộ nhớ nhanh
  • DRAM nhanh hơn (ít nhất là DDR4, DDR5 sẽ còn tốt hơn)
  • Nhiều bộ nhớ (như tối thiểu 16GB), đặc biệt nếu bạn muốn chạy các mẫu lớn hơn (trên 7B)


Để tạo hình ảnh với Khuếch tán ổn định, bạn cần có sức mạnh GPU. Tuy nhiên, bạn không cần phải có GPU quá cầu kỳ để làm được điều đó. Bạn có thể tận dụng GPU tích hợp sẵn có trong máy tính ở nhà của mình:


  1. Tất cả các máy Mac có CPU M1/M2/M3, tích hợp CPU, GPU và bộ nhớ tốc độ cao (chúng thực sự tốt, nhưng do giá bị loại khỏi bài viết cụ thể này)


  2. AMD APU (ví dụ: Ryzen 7 5700U), tích hợp CPU và GPU cho các máy tính mini giá rẻ. Đây sẽ là trọng tâm của bài viết này.


  3. CPU Intel (ví dụ Core i5-1135G7), cũng tích hợp CPU và GPU. Chúng cao hơn một chút so với ngân sách 300 đô la cho toàn bộ PC mini, nhưng độc giả có thể tự mình khám phá thêm.

Và chiếc máy tính AI trị giá 300 USD là gì?

Một chiếc PC mini dựa trên AMD có thông số kỹ thuật sau thường được bán với giá dưới 300 USD. Tôi không muốn xác nhận bất kỳ thương hiệu cụ thể nào, vì vậy bạn có thể tự tìm kiếm:

  • AMDRyzen 7 5800H (8C/16T, lên tới 4,4GHz)
  • RAM 16GB DDR4 (khuyên dùng 32GB)
  • SSD NVME M.2 512GB


Tôi đã chi tiêu một chút và chọn model 400 USD với RAM 32 GB và SSD 1TB (mọi thứ khác đều bằng nhau). Lý do chính là tôi nghiên cứu về LLM nguồn mở và muốn chạy các mô hình lớn hơn, ngoài việc chạy Stable Difusion. Nhưng bạn sẽ có thể thực hiện hầu hết mọi thứ trong bài viết này với chiếc máy tính giá 300 USD.

Chuẩn bị 1: Phân bổ đủ bộ nhớ iGPU

Đối với các APU AMD như Ryzen 7 5800H , bộ nhớ được chia sẻ giữa CPU và iGPU (GPU tích hợp). Trong trường hợp của tôi, tôi có tổng cộng 32GB RAM, nhưng phân bổ mặc định cho iGPU chỉ là 3GB! Điều này thay đổi tùy theo từng máy tính và được cấu hình trong BIOS trong quá trình sản xuất.


Bạn cần thay đổi điều đó tùy thuộc vào trường hợp sử dụng chính của bạn:

  1. Nếu chỉ cần chạy suy luận LLM, bạn có thể bỏ qua toàn bộ bước chuẩn bị này. Vì suy luận LLM sẽ chỉ cần sử dụng CPU và bạn nên tiết kiệm RAM nhất cho CPU để có thể chạy các mô hình LLM lớn hơn.


  2. Nếu bạn cần chạy Khuếch tán ổn định , đặc biệt SDXL (1024x1024), bạn cần phân bổ nhiều RAM cho iGPU mà hệ thống cho phép (thường là một nửa tổng RAM)


Trong trường hợp của tôi, tôi muốn chạy cả suy luận Stable Diffusion XL và LLM trên cùng một PC mini. Vì vậy, tôi muốn phân bổ 16GB (trong tổng số 32GB) cho GPU.


Bạn có thể đạt được điều này bằng cách thay đổi cài đặt trong BIOS. Thông thường, có giới hạn trên và cài đặt mặc định có thể thấp hơn nhiều so với giới hạn trên. Trên máy tính của tôi, giới hạn trên là 16GB hoặc một nửa tổng RAM khả dụng.

BIOS tốt

Nếu BIOS máy tính của bạn hỗ trợ các cài đặt như vậy, hãy tiếp tục và thay đổi số bạn muốn. BIOS của tôi không có cài đặt như vậy.

BIOS kém: Sử dụng công cụ Universal AMD

Nếu BIOS của bạn không có cài đặt này, vui lòng làm theo hướng dẫn hay “Mở khóa phân bổ bộ nhớ GPU trên APU AMD Ryzen™?” của Winston Ma. Tôi đã thử và nó hoạt động tốt nên hiện tại tôi có 16GB VRAM.


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

Chuẩn bị 2: Cài đặt Trình điều khiển & Middleware

Cấu hình phức tạp của zbruceli

Căn chỉnh các ngôi sao

của AMD ROCm (Nền tảng tính toán mở Radeon), có thể so sánh với Nvidia CUDA , là bộ trình điều khiển và phần mềm trung gian cho phép các nhà phát triển tận dụng sức mạnh của GPU của ADM. Và thông thường, các ứng dụng AI cần ROCm để tăng tốc GPU.


Để cài đặt và làm cho ROCm của AMD hoạt động, bạn phải đảm bảo rằng các phiên bản phần cứng GPU, bản phân phối Linux, kernel, python, trình điều khiển HIP, thư viện ROCm và pytorch đều tương thích. Nếu bạn muốn ít đau đớn nhất và có khả năng thành công tối đa trong lần đầu tiên, hãy tuân thủ các kết hợp được đề xuất và đã được xác minh.

Điều kiện tiên quyết

Vui lòng kiểm tra liên kết sau để tải phiên bản kernel và hệ điều hành Linux tương thích rồi cài đặt chúng. Ban đầu, tôi đã phạm sai lầm khi chỉ cài đặt hệ điều hành Linux yêu thích và nhân Linux mặc định của mình và thật khó khăn khi phải quay lại để giải quyết các vấn đề tương thích. Bạn có thể tránh được nỗi đau này bằng cách sử dụng các kết hợp được hỗ trợ chính thức.


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


Biểu đồ tương thích hệ điều hành AMD ROCm

Cài đặt ROCm

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


Nếu toàn bộ quá trình cài đặt hoàn tất tốt đẹp, bạn có thể nhập rocminfo và nội dung như thế này sẽ hiển thị (tôi chỉ cắt những phần có liên quan nhất bằng màu vàng được đánh dấu):

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

Môi trường Python

Sự phụ thuộc của Python có thể khá phức tạp, vì vậy cách tốt nhất là thiết lập một môi trường thích hợp. Bạn có thể sử dụng một trong hai chung cư hoặc venv vì mục đích này.

  • source venv/bin/activate
  • conda activate llm

Pytorch

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


Biểu đồ tương thích Pytorch

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

Ghi đè HSA

Sau đây là dành riêng cho APU có đồ họa tích hợp. Mặc dù chúng không được ROCm hỗ trợ chính thức, nhưng những điều sau đây đã được chứng minh là có hiệu quả.


export HSA_OVERRIDE_GFX_VERSION=9.0.0

Cách xác minh

Bây giờ, sau tất cả các bước phức tạp, hãy kiểm tra xem ROCm có hoạt động với Torch hay không. Và bạn có thể thấy ROCm đang “giả vờ” là CUDA nhằm mục đích của Pytorch.


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

Suy luận LLM

Nói chuyện với chatbot bởi zbruceli


Hãy bắt đầu với điều gì đó dễ dàng dành cho máy tính AI trị giá 300 USD mới được cấu hình của chúng tôi: chạy cục bộ một mô hình ngôn ngữ lớn. Chúng ta có thể chọn một trong các chế độ nguồn mở phổ biến: LLaMA 2 với thông số 7B được tối ưu hóa cho trò chuyện.


Ngoài ra, bạn cũng có thể thử các LLM nhỏ từ Mistral , QWen , Zephyr , Và Vicuna . Bạn có thể tìm thấy nhiều LLM chất lượng tốt hơn tại đây trên “bảng xếp hạng đấu trường chatbot” rất hữu ích của UC Berkeley Phòng thí nghiệm LMSYS .


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

Llama.cpp

Chúng tôi sẽ sử dụng llama.cpp , ban đầu được tối ưu hóa cho CPU và sau đó cũng hỗ trợ GPU. Theo kinh nghiệm của tôi, suy luận LLM hoạt động tốt trên CPU và hầu như không thu được lợi ích gì với GPU khiêm tốn như GPU được tích hợp bên trong cỗ máy AI trị giá 300 USD.


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


Đầu tiên, bạn cần cài đặt wgetgit . Sau đó làm theo các bước để biên dịch và cài đặt llama.cpp.


sudo apt-get install build-essential

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

cd llama.cpp

make

Tải xuống mẫu trọng lượng

Để chạy LLM trên máy rẻ tiền của chúng tôi thay vì máy chủ đám mây có GPU đắt tiền, chúng tôi cần sử dụng phiên bản “nén” của các mô hình để chúng có thể vừa với không gian RAM. Ví dụ đơn giản, mô hình LLaMA-2 7B có tham số 7B, mỗi tham số được biểu thị bằng float16 (2 byte).


  • Float 16: 14B byte hoặc 14GB sẽ không vừa với RAM 8GB của chúng tôi.


  • Lượng tử hóa thành 4 bit: 3,5B byte hoặc 3,5 GB hiện có thể vừa với RAM 8GB của chúng tôi.


Ngoài ra, định dạng tập tin phải là gguf . Vì thế. trong ví dụ của chúng tôi, bạn cần tải xuống các trọng số trong tệp này:

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

Thử nghiệm trên PC mini AMD

Đầu tiên, chúng tôi đã thử nghiệm nó trên PC mini AMD và chúng tôi đã đạt được khoảng 10 mã thông báo mỗi giây. Điều này thực sự khá tốt và bạn có thể tiếp tục trò chuyện với LLM mà không phải chờ đợi quá nhiều.


Cấu hình hệ thống:

  • AMDRyzen 5800H
  • RAM 32GB


Hướng dẫn dòng lệnh:

./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

Thử nghiệm trên máy tính mini Intel

Tiếp theo, chúng tôi đã thử nghiệm trên một PC mini Intel và đạt được khoảng 1,5 mã thông báo mỗi giây. Tốc độ này hơi quá chậm để có một phiên trò chuyện hiệu quả. Đây không phải là một so sánh công bằng vì Intel N5105 rõ ràng là yếu hơn AMD 5800H. Nhưng đó là chiếc PC mini Intel duy nhất mà tôi sở hữu. Nếu bạn sử dụng CPU Intel mạnh hơn (ví dụ: Core i5-1135G7), bạn sẽ nhận được kết quả tương đương. Vui lòng báo cáo những phát hiện của bạn trong phần bình luận bên dưới.


Cấu hình hệ thống:

  • Lõi 4 thế hệ thứ 11 N5105 (Tối đa 2,9 GHz) 4 lõi và 4 luồng
  • RAM 16GB (VRAM 2GB cho iGPU)


./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)

Khuếch tán ổn định

Nghệ sĩ vẽ rồng bằng AI của zbruceli

Cài đặt

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


Và hãy chú ý đến trang này nữa, liên quan đến AMD ROCm

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

Bắt đầu nhanh

export HSA_OVERRIDE_GFX_VERSION=9.0.0

source venv/bin/activate

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

Thử nghiệm khuếch tán ổn định 1.5

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


Kiểm tra 1

  • Lời nhắc: “ngựa vào rừng”


  • Các bước: 20, Bộ lấy mẫu: DDIM, thang đo CFG: 7, Hạt giống: 519288240, Kích thước: 512x512, Hàm băm mô hình: 6ce0161689, Model: v1-5-pruned-emaonly, Phiên bản: v1.6.0


  • Thời gian thực hiện: 1 phút. 8,3 giây.

Thử nghiệm khuếch tán ổn định XL 1.0

SDXL (độ phân giải tối đa 1024x1024) khuyến nghị ít nhất 12GB VRAM, vì vậy bạn chắc chắn cần thực hiện bước Chuẩn bị 1 để phân bổ 16GB VRAM cho iGPU. Vì vậy, nhiệm vụ này chỉ có thể thực hiện được với chiếc PC mini trị giá 400 USD.

./webui.sh --upcast-sampling

Kiểm tra 1:

  • Lời nhắc: “ngựa vào rừng”


  • Các bước: 20, Bộ lấy mẫu: DDIM, thang đo CFG: 7, Hạt giống: 1102941451, Kích thước: 1024x768, Hàm băm mô hình: 31e35c80fc, Model: sd_xl_base_1.0, Phiên bản: v1.6.0


  • Thời gian thực hiện: 7 phút. 41 giây


Kiểm tra 2:

  • Lời nhắc: “taylor swift trẻ tuổi mặc áo hoodie đỏ cưỡi ngựa trong rừng”


  • Dấu nhắc tiêu cực: dị tật, dị dạng, mắt biến dạng, răng biến dạng, ngón tay biến dạng, khuôn mặt biến dạng, bàn tay biến dạng, biến dạng


  • Các bước: 20, Bộ lấy mẫu: DDIM, thang đo CFG: 7, Hạt giống: 2960206663, Kích thước: 1024x1024, Hàm băm mô hình: 31e35c80fc, Model: sd_xl_base_1.0, Phiên bản: v1.6.0


  • Thời gian thực hiện: 6 phút. 12,3 giây.

Windows 11 và AMD/directml

Mặc dù bài viết này tập trung vào hệ điều hành Linux nhưng bạn cũng có thể khiến Stable Diffusion hoạt động trong Windows. Đây là những thử nghiệm của tôi:

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


  • Trước tiên, bạn cần cài đặt Python 3.10.6.


  • Thêm giám đốc Python 3.10.6 vào PATH.



  • Cài đặt git và git clone repo


  • Chạy webui-user.bat từ file explorer


Kiểm tra 1:

  • Lời nhắc: “ngựa vào rừng”
  • Cài đặt: DPM++ 2M Karras, 512x512, bước lấy mẫu 20
  • Thời gian thực hiện: 1m19s

Kết luận

Mô hình AI nguồn mở trên thiết bị cá nhân của zbruceli


Vậy bạn có thấy vui khi chạy các mô hình AI sáng tạo của riêng mình trên chiếc PC mini mới trị giá 300 USD không? Tôi hy vọng bạn làm được.


Các mô hình AI nguồn mở chạy trên thiết bị cá nhân là một trong những lĩnh vực thú vị nhất đối với những người mày mò vì không ai trong chúng ta có nguồn GPU khổng lồ để thực sự đào tạo một mô hình nền tảng. Điều này sẽ tạo ra một thế hệ ứng dụng mới vừa siêu thông minh vừa vẫn bảo vệ quyền riêng tư dữ liệu của chúng ta.


Tiếp theo là gì?

  • Chạy nó trên các thiết bị nhúng thậm chí còn nhỏ hơn: ví dụ: Raspberry Pi


  • Chạy nó trên điện thoại thông minh của bạn (llama.cpp hỗ trợ iOS và Android)


Và vui vẻ mày mò với AI, nguồn mở và trên thiết bị!