Cách chạy một mô hình ngôn ngữ lớn trên Raspberry Pi của bạn
Các mô hình ngôn ngữ lớn, thường được biết đến (và không chính xác) là AI, đã đe dọa làm đảo lộn thế giới xuất bản, nghệ thuật và pháp lý trong nhiều tháng. Một nhược điểm là việc sử dụng các LLM như ChatGPT có nghĩa là tạo một tài khoản và nhờ máy tính của người khác thực hiện công việc. Nhưng bạn có thể chạy LLM đã được đào tạo trên Raspberry Pi của mình để viết thơ, trả lời câu hỏi, v.v.
Mục Lục
Mô hình ngôn ngữ lớn là gì?
Các mô hình ngôn ngữ lớn sử dụng thuật toán học máy để tìm mối quan hệ và mẫu giữa các từ và cụm từ. Được đào tạo về lượng dữ liệu khổng lồ, họ có thể dự đoán theo thống kê những từ nào có khả năng xuất hiện tiếp theo khi được nhắc.
Nếu bạn hỏi hàng nghìn người hôm nay họ cảm thấy thế nào, câu trả lời sẽ là “Tôi ổn”, “Có thể tệ hơn”, “OK, nhưng đầu gối của tôi đang đau”. Cuộc trò chuyện sau đó sẽ rẽ sang một hướng khác. Có lẽ người đó sẽ hỏi thăm sức khỏe của bạn, hoặc tiếp theo là “Xin lỗi, tôi phải chạy đây. Tôi đi làm muộn”.
Với dữ liệu này và lời nhắc ban đầu, một mô hình ngôn ngữ lớn sẽ có thể đưa ra câu trả lời độc đáo và thuyết phục của riêng nó, dựa trên khả năng một từ nhất định xuất hiện tiếp theo trong một chuỗi, kết hợp với mức độ ngẫu nhiên đặt trước, hình phạt lặp lại, và các thông số khác.
Các mô hình ngôn ngữ lớn được sử dụng ngày nay không được đào tạo trên vox pop gồm vài nghìn người. Thay vào đó, họ được cung cấp một lượng dữ liệu không thể tưởng tượng được, được thu thập từ các bộ sưu tập có sẵn công khai, nền tảng truyền thông xã hội, trang web, kho lưu trữ và bộ dữ liệu tùy chỉnh không thường xuyên.
LLM được đào tạo bởi các nhà nghiên cứu con người, những người sẽ củng cố các mẫu nhất định và đưa chúng trở lại thuật toán. Khi bạn hỏi một mô hình ngôn ngữ lớn “loại chó nào tốt nhất?”, nó sẽ có thể đưa ra câu trả lời cho bạn biết rằng chó sục Jack Russell là loại chó tốt nhất và đưa ra lý do tại sao.
Nhưng bất kể câu trả lời thông minh hay thuyết phục và ngu ngốc đến mức nào, thì cả mô hình lẫn cỗ máy mà nó chạy đều không có trí óc và chúng không có khả năng hiểu câu hỏi hoặc từ ngữ tạo nên câu trả lời. Nó chỉ là toán học và rất nhiều dữ liệu.
Tại sao lại chạy Mô hình ngôn ngữ lớn trên Raspberry Pi?
Các mô hình ngôn ngữ lớn ở khắp mọi nơi và đang được các công ty tìm kiếm lớn áp dụng để hỗ trợ trả lời các truy vấn.
Mặc dù thật hấp dẫn khi ném một câu hỏi bằng ngôn ngữ tự nhiên vào hộp đen của công ty, đôi khi bạn muốn tìm kiếm nguồn cảm hứng hoặc đặt câu hỏi mà không cần cung cấp thêm dữ liệu vào hệ thống giám sát của chủ nghĩa tư bản.
Là một bảng thử nghiệm dành cho những người mày mò, máy tính bảng đơn Raspberry Pi về mặt triết học, nếu không muốn nói là phù hợp về mặt vật lý, phù hợp với nỗ lực này.
Vào tháng 2 năm 2023, Meta (công ty trước đây gọi là Facebook) đã công bố LLaMA, một LLM mới tự hào về các mô hình ngôn ngữ có từ 7 tỷ đến 65 tỷ tham số. LLaMA đã được đào tạo bằng cách sử dụng bộ dữ liệu có sẵn công khai,
Mã LLaMA là mã nguồn mở, nghĩa là bất kỳ ai cũng có thể sử dụng và điều chỉnh nó, đồng thời ‘trọng lượng’ hoặc tham số đã được đăng dưới dạng torrent và liên kết nam châm trong một chuỗi trên trang GitHub của dự án.
Vào tháng 3 năm 2023, nhà phát triển Georgi Gerganov đã phát hành llama.cpp, có thể chạy trên nhiều loại phần cứng, bao gồm cả Raspberry Pi. Mã chạy cục bộ và không có dữ liệu nào được gửi tới Meta.
Cài đặt llama.cpp trên Raspberry Pi
Không có hướng dẫn phần cứng nào được xuất bản cho llama.cpp, nhưng nó cực kỳ ngốn bộ xử lý, RAM và bộ nhớ. Đảm bảo rằng bạn đang chạy nó trên Raspberry Pi 4B hoặc 400 với càng nhiều bộ nhớ, bộ nhớ ảo và dung lượng SSD khả dụng càng tốt. Thẻ SD sẽ không cắt nó và một trường hợp có khả năng làm mát tốt là điều bắt buộc.
Chúng tôi sẽ sử dụng mô hình 7 tỷ tham số, vì vậy hãy truy cập chuỗi LLamA GitHub này và tải xuống torrent 7B bằng ứng dụng khách như qBittorrent hoặc Aria.
Sao chép kho lưu trữ llama.cpp và sau đó sử dụng đĩa CD lệnh để di chuyển vào thư mục mới:
git clone https:
cd llama.cpp
Nếu bạn chưa cài đặt trình biên dịch, hãy cài đặt ngay bây giờ với:
sudo apt-get install g++
Bây giờ biên dịch dự án bằng lệnh này:
make
Có khả năng llama.cpp sẽ không biên dịch được và bạn sẽ thấy một loạt thông báo lỗi liên quan đến “vdotq_s32”. Nếu điều này xảy ra, bạn cần hoàn nguyên một cam kết. Đầu tiên, đặt người dùng git cục bộ của bạn:
git config user.name "david"
Bây giờ bạn có thể hoàn nguyên một cam kết trước đó:
git revert 84d9015
Thông báo cam kết git sẽ mở trong trình soạn thảo văn bản nano. Nhấn Ctrl + O để tiết kiệm, sau đó Ctrl + X để thoát nano. llama.cpp bây giờ sẽ biên dịch mà không có lỗi khi bạn nhập:
make
Bạn sẽ cần tạo một thư mục cho các mô hình có trọng số mà bạn định sử dụng:
mkdir models
Bây giờ hãy chuyển các mô hình có trọng số từ LLaMa danh mục:
mv ~/Downloads/LLaMA
Đảm bảo rằng bạn đã cài đặt Python 3 trên Pi của mình và cài đặt các phụ thuộc llama.cpp:
python3 -m pip install torch numpy sentencepiece
Phiên bản NumPy có thể gây ra sự cố. Nâng cấp nó:
pip install numpy
Bây giờ hãy chuyển đổi mô hình 7B sang định dạng ggml FP16:
python3 convert-pth-to-ggml.py models/7B/ 1
Bước trước cực kỳ tốn bộ nhớ và theo tính toán của chúng tôi, sử dụng ít nhất 16GB RAM. Nó cũng siêu chậm và dễ bị hỏng.
Bạn sẽ nhận được kết quả tốt hơn bằng cách thực hiện song song các hướng dẫn này trên máy tính để bàn, sau đó sao chép tệp /models/7B/ggml-model-q4_0.bin đến cùng một vị trí trên Raspberry Pi của bạn.
Lượng tử hóa mô hình thành 4 bit:
./quantize.sh 7B
Đó là nó. LLaMA LLM hiện đã được cài đặt trên Raspberry Pi của bạn và sẵn sàng sử dụng!
Sử dụng llama.cpp trên Raspberry Pi
Để bắt đầu với llama.cpp, hãy đảm bảo rằng bạn đang ở trong thư mục dự án và nhập lệnh sau:
./main -m ./models/7B/ggml-model-q4_0.bin -t 4 -n 128 -p "What is the Linux Kernel?"
Các -m tùy chọn là hướng llama.cpp đến kiểu máy bạn muốn nó sử dụng; -t cho biết số luồng bạn muốn nó sử dụng; -N là số lượng mã thông báo để dự đoán; -P là lời nhắc của bạn. Bạn có thể tùy chỉnh bất kỳ và tất cả các biến này.
Hãy chờ đợi trong một thời gian dài, bởi vì mặc dù Raspberry Pi rất xuất sắc với những gì nó làm, nhưng nó không được thiết kế cho loại hoạt động này của CPU. Trong lời nhắc ví dụ của chúng tôi, llama đã chia văn bản thành tám mã thông báo riêng lẻ, trước khi đưa ra phản hồi sau:
Linux Kernel, một cách ngắn gọn, luôn được gọi là một hệ điều hành. Tuy nhiên, nó không thực sự được coi là một vì đối với tất cả các mục đích thực tế, hầu hết các chức năng của nó được hiển thị thông qua các API và tiện ích có thể được sử dụng bởi bất kỳ HĐH nào khác muốn (hoặc cần) truy cập (các) API đó. Đối với Linux Kernel, bản thân nó không có nhiều việc phải làm với kernel thực tế. Nó sẽ chỉ bắt đầu, nhận các tham số cấu hình từ bộ tải khởi động/initrd bạn chọn, sau đó khởi động nó trên một số phần cứng và bạn bắt đầu bất kỳ công việc kinh doanh nào đòi hỏi vào thời điểm này
Mặc dù đây là một câu trả lời khá mạch lạc, nhưng lần thử thứ hai dẫn đến kết quả giống như món salad từ được cắt nhỏ đại khái:
Hầu hết các bạn có thể đã nghe nói về nó nhưng không thực sự biết họ đang nói về cái gì. Chúng ta sẽ thảo luận chi tiết về vấn đề này vì hiểu đầy đủ về chúng sẽ giúp chúng ta sử dụng máy tính hiệu quả hơn và cũng đưa ra quyết định tốt hơn khi mua phần cứng hoặc phần mềm mới cho PC của bạn ở nhà, văn phòng, v.v.. Nhân Linux là xương sống của hầu hết các hệ điều hành chạy trên một hệ thống máy tính chẳng hạn như android, một Hệ điều hành nguồn mở dựa trên một phần từ hạt nhân này. Nhưng chính xác thì họ có ý nghĩa gì khi nói linux kernal?
Linus Torvalds đã viết ra những suy nghĩ của mình (Kiến Thức)
Điều đáng nói ở điểm này là mỗi phản hồi này mất gần hai giờ để tạo ra và có tất cả bốn lõi CPU hoạt động ở mức 100% xuyên suốt. Tuy nhiên, công việc trong dự án đang tiến triển nhanh chóng và bạn có thể mong đợi các lần tối ưu hóa ARM sắp tới sẽ rút ngắn thời gian.
Bạn cũng có thể mô phỏng toàn bộ cuộc hội thoại với LLM của mình thay vì cung cấp cho nó từng lời nhắc một. thêm -Tôi tùy chọn sẽ bắt đầu llama trong chế độ tương tác, trong khi –interactive-bắt đầu sẽ yêu cầu bạn nhập liệu khi bắt đầu. Để biết danh sách đầy đủ các tùy chọn khả dụng, hãy chạy:
main -h
Xin lưu ý rằng LlaMA không có các quy tắc hạn chế. Đôi khi, nó sẽ phân biệt giới tính, phân biệt chủng tộc, kỳ thị đồng tính và rất sai trái.
Một mô hình ngôn ngữ lớn không thể thay thế cho kiến thức thực
Chạy Meta’s LLaMA trên Raspberry Pi cực kỳ thú vị và bạn có thể muốn tìm đến chuyên gia ảo của mình để hỏi các câu hỏi kỹ thuật, lời khuyên cuộc sống, tình bạn hoặc như một nguồn kiến thức thực sự. Đừng để bị lừa. Các mô hình ngôn ngữ lớn không biết gì, không cảm thấy gì và không hiểu gì. Nếu bạn cần giúp đỡ về điều gì đó, tốt hơn là nói chuyện với một người hoặc đọc một cái gì đó được viết bởi một người.
Nếu không có nhiều thời gian, bạn có thể đọc nhanh nó trong thiết bị đầu cuối Linux của mình!