Chuyển đến nội dung chính
Phiên bản: 1.0.0

llama.cpp

Công cụ llama.cpp phổ biến đi kèm với một Tinh chỉnh Tiện ích. Nó hoạt động tốt trên CPU! Hướng dẫn tinh chỉnh này được sao chép với sự cho phép của Tony Yuan's Tinh chỉnh LLM mã nguồn mở cho môn hóa học dự án.

Xây dựng tiện ích tinh chỉnh từ llama.cpp

Các Tinh chỉnh Tiện ích trong llama.cpp có thể làm việc với các tệp GGUF lượng tử hóa trên CPU và do đó giảm đáng kể các yêu cầu phần cứng và chi phí để tinh chỉnh LLM.

Kiểm tra và tải xuống mã nguồn llama.cpp.

https://github.com/ggerganov/llama.cpp sao chép Git
llama.cpp CD

Xây dựng hệ nhị phân llama.cpp.

Bản dựng MKDIR
Xây dựng đĩa CD
cmake ..
cmake --xây dựng . --config Phát hành

Nếu bạn đã cài đặt GPU NVIDIA và bộ công cụ CUDA, bạn nên xây dựng llama.cpp với hỗ trợ CUDA.

Bản dựng MKDIR
Xây dựng đĩa CD
cmake .. -DLLAMA_CUBLAS=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
cmake --xây dựng . --config Phát hành

Lấy mô hình cơ sở

Chúng tôi sẽ sử dụng mô hình trò chuyện Llama2 13B của Meta làm mô hình cơ sở. Lưu ý rằng chúng tôi đang sử dụng tệp mô hình GGUF lượng tử hóa Q5 trực tiếp để tiết kiệm tài nguyên máy tính. Bạn có thể sử dụng bất kỳ mẫu GGUF tương thích Llama2 nào trên Hugging Face.

CD.. # thay đổi thành thư mục llama.cpp
Mẫu đĩa CD/
cuộn tròn -LO https://huggingface.co/gaianet/Llama-2-13B-Chat-GGUF/resolve/main/llama-2-13b-chat.Q5_K_M.gguf

Tạo bộ câu hỏi và câu trả lời để tinh chỉnh

Tiếp theo, chúng tôi đưa ra 1700+ cặp QA cho môn hóa học. Nó giống như sau trong tệp CSV.

Câu hỏiTrả lời
Điều gì là độc đáo về hydro?Nó là nguyên tố phong phú nhất trong vũ trụ, chiếm hơn 75% tổng số vật chất.
Thành phần chính của Sao Mộc là gì?Hydro là thành phần chính của Sao Mộc và các hành tinh khí khổng lồ khác.
Hydro có thể được sử dụng làm nhiên liệu không?Có, hydro được sử dụng làm nhiên liệu tên lửa. Nó cũng có thể cung cấp năng lượng cho pin nhiên liệu để tạo ra điện.
Số nguyên tử của thủy ngân là gì?Số nguyên tử của thủy ngân là 80
Sao Thủy là gì?Thủy ngân là một kim loại màu bạc là chất lỏng ở nhiệt độ phòng. Nó có số nguyên tử là 80 trên bảng tuần hoàn. Nó độc hại đối với con người.

Chúng tôi đã sử dụng GPT-4 để giúp tôi đưa ra nhiều QA này.

Sau đó, chúng tôi đã viết một Tập lệnh Python để chuyển đổi từng hàng trong tệp CSV thành QA mẫu ở định dạng mẫu trò chuyện Llama2. Lưu ý rằng mỗi cặp QA bắt đầu bằng <SFT> như một chỉ báo cho chương trình tinh chỉnh để bắt đầu một mẫu. Kết quả train.txt Tập tin bây giờ có thể được sử dụng trong tinh chỉnh.

Đặt train.txt trong llama.cpp / mô hình với mô hình cơ sở GGUF.

Tinh chỉnh!

Sử dụng lệnh sau để bắt đầu quá trình tinh chỉnh trên CPU của bạn. Tôi đang đặt nó ở chế độ nền để nó có thể chạy liên tục ngay bây giờ. Có thể mất vài ngày hoặc thậm chí vài tuần tùy thuộc vào số lượng CPU bạn có.

nohup ../build/bin/finetune --model-base llama-2-13b-chat.Q5_K_M.gguf --lora-out lora.bin --train-data train.txt --sample-start '<SFT>' --adam-iter 1024 &

Bạn có thể kiểm tra quy trình vài giờ một lần trong nohup.out tệp. Nó sẽ báo cáo tổn thất cho mỗi lần lặp. Bạn có thể dừng quá trình khi tổn thất đi liên tục dưới 0.1.

Chú thích 1 Nếu bạn có nhiều CPU (hoặc lõi CPU), bạn có thể tăng tốc quá trình tinh chỉnh bằng cách thêm -t tham số đến lệnh trên để sử dụng nhiều luồng hơn. Ví dụ: nếu bạn có 60 lõi CPU, bạn có thể làm -t 60 · để sử dụng tất cả chúng.

Chú thích 2 Nếu quá trình tinh chỉnh của bạn bị gián đoạn, bạn có thể khởi động lại từ Điểm kiểm tra-250.GGUF. Tệp tiếp theo nó xuất ra là trạm kiểm soát-260.GGUF.

nohup ../build/bin/finetune --model-base llama-2-13b-chat.Q5_K_M.gguf --checkpoint-in checkpoint-250.gguf --lora-out lora.bin --train-data train.txt --sample-start '<SFT>' --adam-iter 1024 &

Merge

Quá trình tinh chỉnh cập nhật một số lớp của mạng lưới thần kinh của LLM. Các lớp cập nhật đó được lưu trong một tệp có tên lora.bin và bây giờ bạn có thể hợp nhất chúng trở lại LLM cơ sở để tạo LLM được tinh chỉnh mới.

.. /build/bin/export-lora --model-base llama-2-13b-chat. Q5_K_M.GGUF --LoRa lora.bin --Model-Out Chemistry-Assistant-13B-q5_k_m.GGUF

Kết quả là tập tin này.

cuộn tròn -LO https://huggingface.co/juntaoyuan/chemistry-assistant-13b/resolve/main/chemistry-assistant-13b-q5_k_m.gguf

Chú thích 3 Nếu bạn muốn sử dụng điểm kiểm tra để tạo lora.bin , sử dụng lệnh sau. Điều này là cần thiết khi bạn tin vào trận chung kết lora.bin là một overfit.

.. /build/bin/finetune --model-base llama-2-13b-chat. Q5_K_M.gguf --checkpoint-in checkpoint-250.gguf --only-write-lora ---lora-out lora.bin