Chuyển đến nội dung chính

Hướng Dẫn Mô Hình Tinh Chỉnh SOLAR-10.7B

Hướng dẫn đầy đủ để sử dụng mô hình SOLAR-10.7B đã tinh chỉnh cho các tác vụ dựa trên hướng dẫn trong bối cảnh thực tế.
· 13 phút đọc

Khám phá cùng AI

Dự án SOLAR-10.7B đánh dấu một bước tiến đáng kể trong phát triển các mô hình ngôn ngữ lớn, giới thiệu một cách tiếp cận mới để mở rộng quy mô các mô hình này theo cách hiệu quả và tiết kiệm.

Bài viết bắt đầu bằng việc giải thích SOLAR-10.7B là gì trước khi nêu bật hiệu năng của nó so với các mô hình ngôn ngữ lớn khác và đi sâu vào quy trình sử dụng phiên bản tinh chỉnh chuyên biệt. Cuối cùng, bạn sẽ hiểu các ứng dụng tiềm năng của mô hình SOLAR-10.7B-Instruct đã tinh chỉnh và các hạn chế của nó.

SOLAR-10.7B là gì?

SOLAR-10.7B là mô hình có 10,7 tỷ tham số do một nhóm tại Upstage AI ở Hàn Quốc phát triển.

Dựa trên kiến trúc Llama-2, mô hình này vượt trội hơn các mô hình ngôn ngữ lớn khác có tới 30 tỷ tham số, bao gồm cả mô hình Mixtral 8X7B.

Để tìm hiểu thêm về Llama-2, bài viết Fine-Tuning LLaMA 2: A Step-by-Step Guide to Customizing the Large Language Model của chúng tôi cung cấp hướng dẫn từng bước để tinh chỉnh Llama-2, sử dụng các cách tiếp cận mới nhằm vượt qua giới hạn về bộ nhớ và tính toán để tiếp cận tốt hơn các mô hình nguồn mở.

Hơn nữa, dựa trên nền tảng vững chắc của SOLAR-10.7B, mô hình SOLAR-10.7B-Instruct được tinh chỉnh với trọng tâm là tuân theo các hướng dẫn phức tạp. Biến thể này thể hiện hiệu năng vượt trội, cho thấy khả năng thích ứng của mô hình và hiệu quả của quá trình tinh chỉnh trong việc đạt được các mục tiêu chuyên biệt.

Cuối cùng, SOLAR-10.7B giới thiệu một phương pháp gọi là Depth Up-Scaling, hãy cùng khám phá thêm ở phần sau.

Phương pháp Depth Up-Scaling

Phương pháp sáng tạo này cho phép mở rộng độ sâu của mạng nơ-ron của mô hình mà không cần tăng tương ứng tài nguyên tính toán. Chiến lược như vậy giúp nâng cao cả hiệu quả lẫn hiệu năng tổng thể của mô hình.

Các yếu tố thiết yếu của Depth Up-Scaling

Depth Up-Scaling dựa trên ba thành phần chính: (1) trọng số Mistral 7B, (2) khung Llama 2, và (3) tiền huấn luyện liên tục.

Depth up-scaling for the case with n = 32, s = 48, and m = 8. Depth up-scaling is achieved through a dual-stage process of depthwise scaling followed by continued pretraining. (Source)

Mở rộng độ sâu cho trường hợp n = 32, s = 48 và m = 8. Mở rộng độ sâu đạt được thông qua quy trình hai giai đoạn: tăng tỷ lệ theo chiều sâu, sau đó tiếp tục tiền huấn luyện. (Nguồn)

Mô hình nền tảng:

  • Sử dụng kiến trúc transformer 32 lớp, cụ thể là mô hình Llama 2, khởi tạo với các trọng số đã tiền huấn luyện từ Mistral 7B.
  • Được chọn vì tính tương thích và hiệu năng, nhằm tận dụng tài nguyên cộng đồng và đưa vào các điều chỉnh mới để tăng cường khả năng.
  • Đóng vai trò nền tảng cho việc tăng tỷ lệ theo chiều sâu và tiền huấn luyện tiếp theo để mở rộng hiệu quả.

Tăng tỷ lệ theo chiều sâu:

  • Mở rộng mô hình nền bằng cách đặt số lượng lớp mục tiêu cho mô hình đã mở rộng, có xét đến khả năng phần cứng.
  • Liên quan đến việc nhân đôi mô hình nền, loại bỏ m lớp cuối từ bản gốc và m lớp đầu từ bản sao, rồi nối chúng lại để tạo thành mô hình có s lớp.
  • Quy trình này tạo ra mô hình đã mở rộng với số lớp điều chỉnh để nằm trong khoảng 7 đến 13 tỷ tham số, cụ thể dùng nền tảng n=32 lớp, loại bỏ m=8 lớp để đạt s=48 lớp.

Tiền huấn luyện tiếp tục:

  • Giải quyết sự sụt giảm hiệu năng ban đầu sau khi tăng tỷ lệ theo chiều sâu bằng cách tiếp tục tiền huấn luyện mô hình đã mở rộng.
  • Quan sát thấy hiệu năng phục hồi nhanh trong quá trình tiền huấn luyện tiếp tục, được cho là do giảm tính không đồng nhất và sai khác trong mô hình.
  • Tiếp tục tiền huấn luyện là then chốt để lấy lại và có thể vượt hiệu năng của mô hình nền, tận dụng kiến trúc đã tăng tỷ lệ theo chiều sâu cho việc học hiệu quả.

Các tóm tắt này nêu bật những chiến lược và kết quả chính của cách tiếp cận Depth Up-Scaling, tập trung vào việc tận dụng các mô hình sẵn có, mở rộng thông qua điều chỉnh chiều sâu và nâng cao hiệu năng nhờ tiền huấn luyện liên tục.

Cách tiếp cận đa diện này giúp SOLAR-10.7B đạt được, và trong nhiều trường hợp vượt qua, khả năng của các mô hình lớn hơn nhiều. Sự hiệu quả này khiến nó trở thành lựa chọn hàng đầu cho nhiều ứng dụng cụ thể, thể hiện sức mạnh và tính linh hoạt.

Mô hình SOLAR-10.7B Instruct hoạt động như thế nào?

SOLAR-10.7B Instruct xuất sắc trong việc diễn giải và thực thi các hướng dẫn phức tạp, khiến nó vô cùng hữu ích trong các tình huống cần hiểu chính xác và phản hồi đúng với yêu cầu của con người. Năng lực này rất quan trọng để phát triển các hệ thống AI trực quan và tương tác hơn.


  • SOLAR-10.7B Instruct là kết quả của việc tinh chỉnh mô hình SOLAR-10.7B gốc để tuân theo hướng dẫn ở định dạng Hỏi-Đáp.
  • Quá trình tinh chỉnh chủ yếu sử dụng các tập dữ liệu nguồn mở cùng với các tập dữ liệu Hỏi-Đáp toán học tổng hợp để tăng cường kỹ năng toán học của mô hình.
  • Phiên bản đầu tiên của SOLAR-10.7B Instruct được tạo bằng cách tích hợp các trọng số Mistral 7B nhằm tăng cường khả năng học tập để xử lý thông tin hiệu quả.
  • Khung xương của SOLAR-10.7B là kiến trúc Llama2, mang lại sự kết hợp giữa tốc độ và độ chính xác.

Nhìn chung, tầm quan trọng của mô hình SOLAR-10.7B đã tinh chỉnh nằm ở hiệu năng được nâng cao, khả năng thích ứng và tiềm năng ứng dụng rộng rãi, thúc đẩy các lĩnh vực xử lý ngôn ngữ tự nhiên và trí tuệ nhân tạo tiến lên.

Các ứng dụng tiềm năng của mô hình SOLAR-10.7B đã tinh chỉnh

Trước khi đi vào triển khai kỹ thuật, hãy cùng khám phá một số ứng dụng tiềm năng của mô hình SOLAR-10.7B đã tinh chỉnh.

Dưới đây là một số ví dụ về giáo dục và gia sư cá nhân hóa, hỗ trợ khách hàng nâng cao và tự động hóa sáng tạo nội dung.

  • Giáo dục và gia sư cá nhân hóa: SOLAR-10.7B-Instruct có thể tạo ra cuộc cách mạng trong giáo dục bằng việc mang đến trải nghiệm học tập cá nhân hóa. Nó có thể hiểu các thắc mắc phức tạp của học viên, cung cấp lời giải thích, tài nguyên và bài tập phù hợp. Năng lực này khiến nó trở thành công cụ lý tưởng để phát triển các hệ thống gia sư thông minh thích nghi với phong cách và nhu cầu học tập riêng, nâng cao sự gắn kết và kết quả học tập.

  • Hỗ trợ khách hàng tốt hơn: SOLAR-10.7B-Instruct có thể vận hành các chatbot và trợ lý ảo nâng cao, có khả năng hiểu và giải quyết các yêu cầu phức tạp của khách hàng với độ chính xác cao. Ứng dụng này không chỉ cải thiện trải nghiệm khách hàng bằng cách cung cấp hỗ trợ kịp thời và phù hợp mà còn giảm tải cho nhân viên hỗ trợ bằng cách tự động hóa các câu hỏi thường gặp.

  • Tự động tạo và tóm tắt nội dung: Đối với các nhà sản xuất nội dung và truyền thông, SOLAR-10.7B-Instruct cho phép tự động tạo nội dung viết, như bài báo, báo cáo và sáng tác. Ngoài ra, nó có thể tóm tắt các tài liệu dài thành định dạng ngắn gọn, dễ hiểu, trở nên vô giá đối với nhà báo, nhà nghiên cứu và chuyên gia cần nhanh chóng nắm bắt và báo cáo lượng thông tin lớn.


Những ví dụ này nhấn mạnh tính linh hoạt và tiềm năng của SOLAR-10.7B-Instruct trong việc tác động và cải thiện hiệu quả, khả năng tiếp cận và trải nghiệm người dùng trên nhiều ngành khác nhau.

Hướng dẫn từng bước sử dụng SOLAR-10.7B Instruct

Chúng ta đã có đủ bối cảnh về mô hình SOLAR-10.7B, giờ là lúc bắt tay vào thực hành.

Phần này nhằm cung cấp toàn bộ hướng dẫn để chạy mô hình SOLAR 10.7 Instruct v1.0 - GGUF từ upstage.

Các đoạn mã được lấy cảm hứng từ tài liệu chính thức trên Hugging Face. Các bước chính như sau:

  • Cài đặt và nhập các thư viện cần thiết
  • Xác định mô hình SOLAR-10.7B cần dùng từ Hugging Face
  • Chạy suy luận mô hình
  • Tạo kết quả từ yêu cầu của người dùng

Cài đặt thư viện

Các thư viện chính sử dụng là transformers và accelerate.

  • Thư viện transformers cung cấp quyền truy cập vào các mô hình tiền huấn luyện, và phiên bản được chỉ định ở đây là 4.35.2.
  • Thư viện accelerate được thiết kế để đơn giản hóa việc chạy các mô hình học máy trên phần cứng khác nhau (CPU, GPU) mà không cần hiểu sâu về thông số phần cứng.
%%bash
pip -q install transformers==4.35.2
pip -q install accelerate

Nhập thư viện

Sau khi cài đặt xong, chúng ta tiến hành nhập các thư viện cần thiết sau:

  • torch là thư viện PyTorch, một thư viện học máy nguồn mở phổ biến dùng cho các bài toán như thị giác máy tính và NLP.
  • AutoModelForCausalLM dùng để tải mô hình tiền huấn luyện cho tác vụ mô hình hóa ngôn ngữ nhân quả, và AutoTokenizer chịu trách nhiệm chuyển đổi văn bản sang định dạng mà mô hình có thể hiểu (tokenization).
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

Cấu hình GPU

Mô hình được sử dụng là phiên bản 1 của SOLAR-10.7B từ Hugging Face.

Cần có tài nguyên GPU để tăng tốc quá trình tải mô hình và suy luận.

Cách truy cập GPU trên Google Colab được minh họa trong hình dưới:

  • Từ thẻ Runtime, chọn Change runtime
  • Sau đó, chọn T4 GPU trong phần Hardware accelerator và Save thay đổi

Điều này sẽ chuyển runtime mặc định sang T4:

GPU access from Google Colab

Chúng ta có thể kiểm tra thuộc tính của runtime bằng cách chạy lệnh sau từ notebook Colab.

!nvidia-smi

GPU properties

Thuộc tính GPU

Định nghĩa mô hình

Mọi thứ đã sẵn sàng; chúng ta có thể tiếp tục tải mô hình như sau:

model_ID = "Upstage/SOLAR-10.7B-Instruct-v1.0"

tokenizer = AutoTokenizer.from_pretrained(model_ID)
model = AutoModelForCausalLM.from_pretrained(
	model_ID,
	device_map="auto",
	torch_dtype=torch.float16,
)
  • model_ID là chuỗi định danh duy nhất của mô hình tiền huấn luyện muốn sử dụng. Ở đây là "Upstage/SOLAR-10.7B-Instruct-v1.0".
  • AutoTokenizer.from_pretrained(model_ID) tải tokenizer đã tiền huấn luyện theo model_ID được chỉ định, chuẩn bị cho việc xử lý đầu vào văn bản.
  • AutoModelForCausalLM.from_pretrained() tải chính mô hình ngôn ngữ nhân quả, với device_map="auto" để tự động sử dụng phần cứng tốt nhất sẵn có (GPU đã thiết lập), và torch_dtype=torch.float16 để dùng số chấm động 16-bit nhằm tiết kiệm bộ nhớ và có thể tăng tốc tính toán.

Suy luận mô hình

Trước khi tạo phản hồi, văn bản đầu vào (yêu cầu của người dùng) được định dạng và mã hóa thành token.

  • user_request chứa câu hỏi hoặc đầu vào cho mô hình.
  • conversation định dạng đầu vào như một phần của cuộc hội thoại, gắn nhãn vai trò (ví dụ: 'user').
  • apply_chat_template áp dụng mẫu hội thoại cho đầu vào, chuẩn bị theo định dạng mà mô hình hiểu.
  • tokenizer(prompt, return_tensors="pt") chuyển prompt thành token và chỉ định kiểu tensor ("pt" cho tensor PyTorch), và .to(model.device) đảm bảo đầu vào nằm trên cùng thiết bị (CPU hoặc GPU) với mô hình.
user_request = "What is the square root of 24?"

conversation = [ {'role': 'user', 'content': user_request} ]

prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

Tạo kết quả

Phần cuối sử dụng mô hình để tạo phản hồi cho câu hỏi đầu vào, sau đó giải mã và in văn bản được tạo.

  • model.generate() tạo văn bản dựa trên đầu vào, với use_cache=True để tăng tốc bằng cách tái sử dụng kết quả đã tính trước. max_length=4096 giới hạn độ dài tối đa của văn bản sinh ra.
  • tokenizer.decode(outputs[0]) chuyển các token được tạo về văn bản dễ đọc.
  • Lệnh print hiển thị câu trả lời được tạo cho câu hỏi của người dùng.
outputs = model.generate(**inputs, use_cache=True, max_length=4096)
output_text = tokenizer.decode(outputs[0])
print(output_text)

Thực thi thành công đoạn mã trên sẽ tạo ra kết quả sau:

image4.png

Bằng cách thay yêu cầu của người dùng bằng văn bản sau, chúng ta nhận được phản hồi được tạo

user_request = "Tell me a story about the universe"

image6.png

Hạn chế của mô hình SOLAR-10.7B

Bất chấp mọi ưu điểm, SOLAR-10.7B cũng có những hạn chế như các mô hình ngôn ngữ lớn khác, và các điểm chính được nêu dưới đây:

  • Khám phá siêu tham số kỹ lưỡng: nhu cầu khám phá kỹ hơn các siêu tham số của mô hình trong quá trình Depth Up-Scaling (DUS) là một hạn chế quan trọng. Điều này dẫn đến việc loại bỏ 8 lớp khỏi mô hình nền do giới hạn phần cứng.
  • Đòi hỏi tính toán cao: mô hình cần tài nguyên tính toán đáng kể, hạn chế việc sử dụng đối với cá nhân và tổ chức có năng lực tính toán thấp.
  • Dễ bị thiên lệch: thiên lệch tiềm ẩn trong dữ liệu huấn luyện có thể ảnh hưởng đến hiệu năng của mô hình trong một số trường hợp sử dụng.
  • Quan ngại môi trường: việc huấn luyện và suy luận mô hình tiêu tốn nhiều năng lượng, có thể làm dấy lên lo ngại về môi trường.

Kết luận

Bài viết đã khám phá mô hình SOLAR-10.7B, nêu bật đóng góp của nó cho trí tuệ nhân tạo thông qua cách tiếp cận mở rộng độ sâu. Bài viết đã phác thảo cách mô hình vận hành và các ứng dụng tiềm năng, đồng thời cung cấp hướng dẫn thực hành từ cài đặt đến tạo kết quả.

Bên cạnh các khả năng, bài viết cũng đề cập đến những hạn chế của SOLAR-10.7B, đảm bảo góc nhìn toàn diện cho người dùng. Khi AI tiếp tục phát triển, SOLAR-10.7B minh chứng cho những bước tiến hướng tới các công cụ AI linh hoạt và dễ tiếp cận hơn.

Với những ai muốn đi sâu hơn vào tiềm năng của AI, hướng dẫn FLAN-T5 Tutorial: Guide and Fine-Tuning của chúng tôi cung cấp hướng dẫn đầy đủ để tinh chỉnh mô hình FLAN-T5 cho tác vụ Hỏi-Đáp bằng thư viện transformers và chạy suy luận tối ưu trong bối cảnh thực tế. Bạn cũng có thể xem hướng dẫn tinh chỉnh GPT-3.5 và phần code-along về tinh chỉnh mô hình LlaMA 2 của riêng bạn.

Zoumana Keita

Tác giả

Zoumana Keita

Nhà khoa học dữ liệu đa tài, yêu thích chia sẻ kiến thức và đóng góp cho cộng đồng, Zoumana là người sáng tạo nội dung trên YouTube và là cây bút công nghệ hàng đầu trên Medium. Anh yêu thích thuyết trình, lập trình và giảng dạy. Zoumana có hai bằng thạc sĩ: một về khoa học máy tính chuyên sâu Học máy tại Paris, Pháp, và một về Khoa học dữ liệu tại Texas Tech University, Hoa Kỳ. Anh bắt đầu sự nghiệp với vai trò Nhà phát triển phần mềm tại Groupe OPEN ở Pháp, sau đó chuyển sang IBM làm Tư vấn Học máy, nơi anh phát triển các giải pháp AI đầu-cuối cho các công ty bảo hiểm. Zoumana gia nhập Axionable, startup Trí tuệ nhân tạo Bền vững đầu tiên có trụ sở tại Paris và Montreal. Tại đây, anh làm Nhà khoa học dữ liệu và triển khai các sản phẩm AI, chủ yếu là các bài toán NLP, cho khách hàng tại Pháp, Montreal, Singapore và Thụy Sĩ. Ngoài ra, 5% thời gian của anh được dành cho Nghiên cứu và Phát triển. Hiện tại, anh làm việc với vai trò Nhà khoa học dữ liệu cao cấp tại IFC - Nhóm Ngân hàng Thế giới.

Chủ đề

Liên quan