TinyLlama 1.1B - Kích thước không thành vấn đề

TinyLlama 1.1B – Kích thước không thành vấn đề

Nút nguồn: 3081711

Giới thiệu

Trong bối cảnh trí tuệ nhân tạo và học máy đang phát triển nhanh chóng, TinyLlama 1.1B nổi lên như một sự phát triển đáng chú ý. Trong thời đại mà các hạn chế về tính toán đặt ra thách thức cho việc chạy các mô hình phức tạp hơn, TinyLlama nổi bật nhờ thách thức những kỳ vọng. Nó thể hiện hiệu suất vượt trội của các mẫu máy nhỏ gọn.

Bài viết này nhằm mục đích cung cấp một phân tích về TinyLlama 1.1B, một mô hình ngôn ngữ lớn nhỏ gọn. Chúng ta sẽ đi sâu vào các khía cạnh cốt lõi của nó, chẳng hạn như cách nó được đào tạo về các tiêu chuẩn hiệu suất và cách triển khai thực tế bằng nền tảng Ôm mặt. Chúng tôi thậm chí sẽ chạy mô hình này trên Google Colab miễn phí và kiểm tra khả năng toán học cũng như lý luận của nó.

TinyLlama 1.1B

Mục tiêu học tập

  • Có được sự hiểu biết toàn diện về TinyLlama 1.1B
  • Khám phá quá trình đào tạo phức tạp mà người mẫu đã trải qua
  • Phân tích hiệu suất và kết quả điểm chuẩn để đánh giá hiệu quả của nó
  • Tìm hiểu các bước thực tế để triển khai TinyLlama 1.1B bằng các ví dụ về mã hóa

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

TinyLlama 1.1B là gì?

TinyLlama 1.1B, một phần của dự án Llama rộng hơn, là minh chứng cho những tiến bộ trong mô hình hóa ngôn ngữ. Đó là một mô hình có 1.1 tỷ tham số, được đào tạo trên 3 nghìn tỷ mã thông báo đáng kinh ngạc, đưa nó vào một vị trí độc nhất trong bối cảnh AI. Không giống như các phiên bản lớn hơn, TinyLlama 1.1B được thiết kế để hiệu quả và dễ quản lý hơn, khiến nó trở thành lựa chọn tốt cho các ứng dụng có nguồn lực tính toán hạn chế.

Mô hình nguồn mở này dân chủ hóa khả năng tiếp cận công nghệ AI tiên tiến, cho phép nhiều nhà phát triển và nhà nghiên cứu khám phá và đổi mới trong lĩnh vực xử lý ngôn ngữ tự nhiên. Đây là một mô hình được biết đến với khả năng cân bằng hiệu suất với mức tiêu thụ tài nguyên, một yếu tố quan trọng cần cân nhắc trong môi trường tính toán đa dạng ngày nay.

Quy trình đào tạo TinyLlama 1.1B

Quá trình đào tạo của TinyLlama 1.1B rất hấp dẫn, giống như chính mô hình vậy. Quá trình đào tạo TinyLlama chỉ diễn ra trong 90 ngày, được đào tạo trên 16 GPU A100-40G. Quá trình đào tạo trước được thực hiện trên 3 nghìn tỷ Token và Nhóm TinyLlama đã xuất bản mô hình trung gian giữa mỗi nửa nghìn tỷ. 

Về dữ liệu, Slimpajama và Starcodedata được lấy với kích thước tập dữ liệu tổng hợp là 950 tỷ Token. Tỷ lệ ngôn ngữ trên mã tự nhiên được giữ ở mức 7:3, tức là 70% dữ liệu là ngôn ngữ tự nhiên và 30% là mã. Do đó, để đạt được mốc 3 nghìn tỷ Token cho việc tinh chỉnh, TinyLlama đã trải qua 3 giai đoạn đào tạo cho tập dữ liệu này. 

Thậm chí còn có một phiên bản trò chuyện của TinyLlama được gọi là TinyLlama-Chat được phát hành. Ban đầu, mô hình này được tinh chỉnh trên bộ dữ liệu UltraChat, nơi chứa các cuộc hội thoại tổng hợp đa dạng do ChatGPT tạo ra. Bước này rất quan trọng trong việc tạo ra mô hình để xử lý các bối cảnh và phong cách đàm thoại khác nhau.

Đã hoàn thiện thêm bằng cách sử dụng DPOTrainer trên bộ dữ liệu UltraFeedback. Giai đoạn đào tạo này tập trung vào việc điều chỉnh các phản hồi của mô hình để phù hợp với các kiểu trò chuyện giống con người. Kết quả là một mô hình không chỉ nắm bắt thông tin về các chủ đề khác nhau mà còn tương tác một cách tự nhiên và hấp dẫn​.

Bạn cũng có thể đọc: Bắt đầu với LlaMA 2: Hướng dẫn cho người mới bắt đầu

Kết quả hiệu suất và điểm chuẩn

Đánh giá hiệu suất của TinyLlama 1.1B cho thấy khả năng cung cấp phản hồi chất lượng cao một cách nhanh chóng. Việc đào tạo đã mang lại cho nó khả năng phục vụ các ứng dụng đa ngôn ngữ, một tính năng quan trọng trong thế giới toàn cầu hóa của chúng ta. Mặc dù có kích thước nhỏ hơn nhưng TinyLlama 1.1B vẫn bắt kịp các đối tác lớn hơn về chất lượng và tốc độ phản hồi, khiến nó trở thành một công cụ mạnh mẽ trong các ứng dụng AI khác nhau.

Các điểm chuẩn cho TinyLlama 1.1B, mặc dù ít rộng hơn so với các điểm chuẩn dành cho các mô hình lớn hơn, nhưng vẫn thể hiện khả năng xử lý các tác vụ ngôn ngữ phức tạp của nó. Khả năng tạo ra các phản hồi mạch lạc và phù hợp với ngữ cảnh bằng nhiều ngôn ngữ là đặc biệt ấn tượng. Mô hình này đã được thử nghiệm trên các điểm chuẩn khác nhau như HellaSwag, WinoGrande, ARC, MMLU và các điểm chuẩn khác. Điểm trung bình tổng hợp là 52.99. Điều này tốt hơn nhiều so với Mô hình 1 tỷ tham số khác, tức là Pythia 1B, đạt được điểm trung bình là 48.3. Bảng mô tả điểm số riêng của từng điểm chuẩn

điểm chuẩn Điểm TinyLlama 1.1B
HellaSwag 59.2
nghĩa đen 36.0
WinoGrande 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
pika 73.29
trung bình 52.9

TinyLlama – Bắt đầu

Ở đây, trong phần này, chúng tôi sẽ tải xuống phiên bản lượng tử hóa của TinyLlama Chat và chạy nó trong Google Colab. Trước khi tải xuống mô hình, chúng ta phải tải xuống và cài đặt các Gói Python sau

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • Sản phẩm CMAKE_ARGS=”-DLLAMA_CUBLAS=bật” FORCE_CMAKE=1, sẽ cho phép llama_cpp_python sử dụng GPU Nvidia có sẵn trong phiên bản colab miễn phí.
  • Sau đó chúng ta cài đặt llama_cpp_python gói thông qua pip3
  • Chúng tôi thậm chí còn tải xuống ôm mặt trung tâm, trong đó chúng tôi sẽ tải xuống Trò chuyện TinyLlama 1.1B được lượng tử hóa

Để kiểm tra mô hình Trò chuyện TinyLlama 1.1B, trước tiên chúng ta cần tải xuống phiên bản lượng tử hóa của nó. Để tải xuống, chúng tôi sẽ chạy đoạn mã sau

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

Ở đây, ôm_face_hub thư viện sẽ đảm nhiệm quá trình tải xuống mô hình lượng tử hóa. Đối với điều này, chúng tôi nhập khẩu hf_hub_download có các tham số sau:

  • tên_người mẫu: Đối với biến này, chúng tôi chuyển mô hình mà chúng tôi muốn tải xuống. Ở đây chúng tôi muốn tải xuống mô hình TinyLlama 1.1B Chat GGUF.
  • tệp_mô hình: Ở đây chúng tôi chỉ định loại mô hình lượng tử hóa mà chúng tôi muốn tải xuống. Tại đây, chúng tôi sẽ tải xuống phiên bản lượng tử hóa 8 bit của Trò chuyện TinyLlama 1.1B.
  • Cuối cùng, chúng tôi chuyển các tham số này cho hf_hub_download, lấy các tham số này và tải xuống mô hình đã chỉ định. Sau khi tải xuống, nó sẽ trả về đường dẫn nơi mô hình được tải xuống.
  • Đường dẫn trả về này đang được lưu trong model_path biến.

Bây giờ, chúng ta có thể tải mô hình này thông qua llama_cpp_python thư viện. Mã để tải mô hình sẽ giống như mã bên dưới.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

Chúng tôi nhập khẩu Loài đà mã ở nam mỹ lớp học từ llama_cpp, có các tham số sau

  • model_path: Biến này lấy đường dẫn nơi mô hình của chúng tôi được lưu trữ. Chúng tôi đã có được đường dẫn từ bước trước mà chúng tôi sẽ cung cấp ở đây
  • n_ctx: Ở đây, chúng tôi đưa ra độ dài ngữ cảnh cho mô hình. Hiện tại, chúng tôi đang cung cấp 512 mã thông báo làm độ dài ngữ cảnh
  • n_thread: Ở đây chúng tôi đề cập đến số lượng chủ đề được sử dụng bởi Loài đà mã ở nam mỹ tốt nghiệp lớp XNUMX
  • n_gpu_layers: Chúng tôi chỉ định điều này nếu chúng tôi có GPU đang chạy, điều này chúng tôi sẽ thực hiện trong trường hợp colab miễn phí. Để đạt được điều này, chúng tôi vượt qua 40, ngụ ý rằng chúng tôi muốn giảm tải toàn bộ mô hình vào GPU và không muốn bất kỳ phần nào của mô hình đó chạy trong RAM hệ thống
  • Cuối cùng, chúng ta tạo một đối tượng từ đây Loài đà mã ở nam mỹ lớp và đưa nó vào biến llm

Việc chạy mã này sẽ tải mô hình lượng tử hóa Trò chuyện TinyLlama 1.1B lên GPU và đặt độ dài ngữ cảnh phù hợp. Bây giờ là lúc thực hiện một số suy luận về mô hình này. Đối với điều này, chúng tôi làm việc với mã dưới đây

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

Để suy ra mô hình, chúng tôi chuyển các tham số sau cho LLM:

  • mẫu lời nhắc/trò chuyện: Đây là Mẫu nhắc nhở cần thiết để trò chuyện với người mẫu. Mẫu nói trên(I E , ) là phiên bản phù hợp với mô hình Trò chuyện TinyLlama 1.1B. Trong mẫu, câu sau Người dùng là Lời nhắc của Người dùng và thế hệ sẽ được tạo sau Trợ lý.
  • max_tokens: Đối với biến này, chúng tôi chuyển một giá trị xác định số lượng mã thông báo tối đa mà Mô hình ngôn ngữ lớn có thể xuất ra khi đưa ra Lời nhắc. Hiện tại, chúng tôi đang giới hạn ở mức 512 mã thông báo.
  • dừng lại: Đối với biến này, chúng tôi chuyển mã thông báo dừng. Mã thông báo dừng yêu cầu Mô hình ngôn ngữ lớn ngừng tạo thêm mã thông báo. Đối với Trò chuyện TinyLlama 1.1B, mã thông báo dừng là

Văn bản được tạo sẽ được lưu trữ trong biến đầu ra khi chúng tôi chạy nó. Kết quả được tạo ở định dạng tương tự như lệnh gọi API OpenAI. Do đó, chúng ta có thể truy cập thế hệ thông qua câu lệnh in đã cho, tương tự như cách chúng ta truy cập thế hệ từ các phản hồi OpenAI. Đầu ra được tạo ra có thể được nhìn thấy dưới đây

TinyLlama 1.1B

Đối với mô hình có kích thước này, phản hồi được tạo ra là đỉnh cao. Đây là điều bất ngờ đối với một mẫu máy có kích thước như thế này; ngữ pháp và giọng điệu trông hoàn toàn ổn và không có dấu hiệu lặp lại câu. Hãy thử kiểm tra khả năng suy luận của mô hình

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
TinyLlama 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Càng xa càng tốt. Từ những ví dụ chúng ta đã thấy, mô hình tạo ra những câu trả lời tốt. Nhưng điều này có thể không đúng trong mọi trường hợp vì chúng tôi chỉ kiểm tra nó trên một số câu hỏi hạn chế. Hãy thậm chí kiểm tra mô hình về khả năng suy luận toán học của nó

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Từ các ví dụ chúng ta đã thấy, rõ ràng TinyLlamaChat hoạt động cực kỳ kém trong việc trả lời các câu hỏi năng khiếu đơn giản trong môn toán. Điều này được mong đợi vì mô hình chưa được đào tạo trước trên bất kỳ tập dữ liệu toán học nào. Chất lượng của thế hệ có thể được cải thiện bằng cách tinh chỉnh nó trên tập dữ liệu toán học

Đến với tinh chỉnh, TinyLlama là lựa chọn phù hợp cho những người bị hạn chế về phần cứng hạn chế và muốn tinh chỉnh các mô hình ngôn ngữ lớn trên tập dữ liệu cụ thể của họ

Các trường hợp sử dụng và ứng dụng tiềm năng

Với kích thước nhỏ gọn của TinyLlama, với 1.1 tỷ tham số, các ứng dụng của nó chủ yếu phù hợp với môi trường mà các mô hình lớn hơn có thể không khả thi do hạn chế về phần cứng hoặc hiệu quả cao hơn. Dưới đây là một số trường hợp sử dụng cụ thể có cân nhắc kích thước của nó:

Ứng dụng di động: Kích thước nhỏ hơn của TinyLlama khiến nó trở thành lựa chọn tốt để tích hợp vào các ứng dụng di động cần xử lý trên thiết bị. Điều này bao gồm các ứng dụng dịch ngôn ngữ, tính năng trợ lý cá nhân và chatbot có thể hoạt động hiệu quả trên điện thoại thông minh.

Hệ thống nhúng trong thiết bị IoT: Trong lĩnh vực Internet of Things (IoT), tài nguyên tính toán thường bị hạn chế; TinyLlama có thể được sử dụng để bổ sung khả năng xử lý ngôn ngữ thông minh cho các thiết bị khác nhau như trợ lý nhà thông minh, công nghệ thiết bị đeo và các thiết bị kết nối khác.

Máy tính cạnh: Đối với các ứng dụng được hưởng lợi từ việc xử lý dữ liệu gần nguồn hơn là trong môi trường đám mây tập trung, TinyLlama có thể được sử dụng một cách hiệu quả. Điều này bao gồm xử lý ngôn ngữ thời gian thực trong hệ thống ô tô, thiết bị sản xuất và các thiết bị biên khác.

Nghiên cứu ngôn ngữ tài nguyên thấp: Do kích thước nhỏ hơn và yêu cầu tính toán thấp hơn, TinyLlama có thể là một công cụ có giá trị trong nghiên cứu ngôn ngữ, đặc biệt đối với các ngôn ngữ có nguồn lực hạn chế, nơi việc đào tạo mô hình quy mô lớn là không khả thi.

Công cụ giáo dục: Trong môi trường giáo dục, đặc biệt là những môi trường có quyền truy cập hạn chế vào tài nguyên máy tính cao cấp, TinyLlama có thể được sử dụng để phát triển các ứng dụng học ngôn ngữ, công cụ giáo dục tương tác và các công cụ hỗ trợ học tập khác.

Tạo nội dung cho doanh nghiệp nhỏ: Các doanh nghiệp nhỏ với nguồn lực hạn chế có thể sử dụng TinyLlama để tạo nội dung, như mô tả sản phẩm, nội dung tiếp thị và thư từ khách hàng mà không cần sức mạnh tính toán mở rộng.

Nguyên mẫu và thử nghiệm: Các nhà phát triển và nhà nghiên cứu muốn thử nghiệm các mô hình ngôn ngữ nhưng thiếu quyền truy cập vào tài nguyên máy tính mạnh mẽ có thể sử dụng TinyLlama để tạo nguyên mẫu và phát triển các ứng dụng NLP mới.

Phân tích dữ liệu hiệu quả: TinyLlama có thể được sử dụng để phân tích văn bản và trích xuất dữ liệu trong các tình huống cần xử lý nhanh chóng và hiệu quả, như phân tích phản hồi của khách hàng, phản hồi khảo sát hoặc tương tác trên mạng xã hội.

Kết luận

TinyLlama 1.1B là minh chứng cho những tiến bộ trong lĩnh vực AI và xử lý ngôn ngữ tự nhiên. Sự phát triển và tính sẵn có rộng rãi của nó là rất quan trọng để tạo ra các mô hình ngôn ngữ suy luận hiệu quả, nhỏ và nhanh hơn. Bằng cách cân bằng phạm vi tham số nhỏ hơn với hiệu suất mạnh mẽ, TinyLlama 1.1B giải quyết nhu cầu quan trọng về các mô hình mạnh mẽ và thiết thực cho nhiều ứng dụng. Khả năng hiểu và tạo ngôn ngữ theo cách giống con người trong khi đủ nhẹ cho các môi trường điện toán khác nhau khiến nó trở thành lựa chọn phù hợp cho những người đang gặp khó khăn khi chạy Mô hình ngôn ngữ lớn trên máy của họ. Mô hình có thể được tinh chỉnh dễ dàng trên tập dữ liệu và có thể được đào tạo với nguồn lực máy tính hạn chế. 

Những điểm chính rút ra từ bài viết này bao gồm

  • Được thiết kế để mang lại hiệu quả, TinyLlama 1.1B có sẵn cho nhiều đối tượng hơn, bao gồm cả những người có nguồn lực tính toán hạn chế, khiến nó phù hợp với một số ứng dụng.
  • Mô hình này đã trải qua một quá trình đào tạo sâu rộng, bao gồm đào tạo về 3 nghìn tỷ mã thông báo trong 90 ngày bằng cách sử dụng 16 GPU A100-40G.
  • Mặc dù có kích thước nhỏ hơn nhưng TinyLlama 1.1B vẫn mang lại phản hồi chất lượng cao, phù hợp với ngữ cảnh bằng nhiều ngôn ngữ, khiến đây trở thành một mô hình đáng để cân nhắc.
  • Đây là một lựa chọn tốt cho các ứng dụng di động, thiết bị IoT, công cụ giáo dục, v.v. Kích thước nhỏ gọn và hiệu quả của nó cho phép ứng dụng rộng rãi.
  • Yêu cầu tính toán thấp hơn khiến nó trở thành một công cụ có giá trị trong nghiên cứu ngôn ngữ, đặc biệt đối với các ngôn ngữ có nguồn lực hạn chế.
  • Mô hình này là một lựa chọn tốt cho những người đang thử nghiệm các mô hình ngôn ngữ hoặc phát triển Ứng dụng NLP mới, chủ yếu trong các môi trường có sức mạnh tính toán hạn chế.

Những câu hỏi thường gặp

Q1. TinyLlama 1.1B là gì?

A. TinyLlama 1.1B là mô hình ngôn ngữ lớn nhỏ gọn, hiệu quả với 1.1 tỷ tham số, được đào tạo trên 3 nghìn tỷ token, phù hợp cho các ứng dụng có nguồn lực tính toán hạn chế.

Q2. TinyLlama 1.1B được đào tạo như thế nào?

A. Nó đã được đào tạo trong hơn 90 ngày bằng cách sử dụng 16 GPU A100-40G trên các bộ dữ liệu bao gồm Slimpajama và Starcodedata, với tỷ lệ ngôn ngữ và mã tự nhiên là 7:3.

Q3. Điểm chuẩn hiệu suất của TinyLlama 1.1B là gì?

A. TinyLlama 1.1B thể hiện kỹ năng xử lý các tác vụ ngôn ngữ phức tạp, đạt điểm trung bình 52.99 trên các điểm chuẩn như HellaSwag, MMLU và WinoGrande.

Q4. Một số trường hợp sử dụng tiềm năng của TinyLlama 1.1B là gì?

A. Nó phù hợp cho các ứng dụng mà kích thước và tốc độ là một vấn đề quan trọng. Chúng bao gồm các ứng dụng di động, thiết bị IoT như thiết bị tự động hóa gia đình, tạo nội dung cho doanh nghiệp nhỏ và phân tích dữ liệu hiệu quả.

Q5. TinyLlama 1.1B có phù hợp với các nhà phát triển có nguồn lực hạn chế không?

A. Hoàn toàn có thể, đó là một lựa chọn hoàn hảo cho các nhà phát triển và nhà nghiên cứu thiếu quyền truy cập vào các tài nguyên máy tính mạnh mẽ để tạo nguyên mẫu và phát triển các ứng dụng NLP mới. Mô hình TinyLlama thậm chí có thể chạy trên máy Raspberry Pi.

Q6. TinyLlama 1.1B thực hiện các tác vụ suy luận toán học như thế nào?

A. Mặc dù nó thực sự vượt trội trong các nhiệm vụ ngôn ngữ khác nhau, nhưng nó lại bộc lộ những hạn chế trong lý luận toán học, điều này có thể được cải thiện bằng cách tinh chỉnh các bộ dữ liệu có liên quan.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

Dấu thời gian:

Thêm từ Phân tích Vidhya