1 điểm bởi GN⁺ 2024-01-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mixtral 8x7B là mô hình Sparse Mixture-of-Experts (SMoE) giữ nguyên kiến trúc nền của Mistral 7B nhưng thay khối feedforward ở mỗi lớp bằng 8 expert, được phát hành với open weights và giấy phép Apache 2.0
  • Với mỗi token, bộ định tuyến chỉ chọn 2 expert trong 8 expert để tính toán, nên dù có thể truy cập 47B tham số cho mỗi token, số tham số hoạt động khi suy luận được giới hạn ở 13B
  • Mô hình được huấn luyện với ngữ cảnh 32k token và cho thấy hiệu năng vượt hoặc tương đương Llama 2 70B và GPT-3.5 trên nhiều benchmark đã đánh giá, đặc biệt mạnh ở toán học, sinh mã và tác vụ đa ngôn ngữ
  • Mixtral 8x7B – Instruct là mô hình chat được huấn luyện tuân theo chỉ dẫn bằng supervised fine-tuning và direct preference optimization (DPO), vượt GPT-3.5 Turbo, Claude-2.1, Gemini Pro và Llama 2 70B-chat trong đánh giá của con người
  • Kiến trúc sparse expert giúp tăng tổng số tham số trong khi vẫn kiềm chế lượng tính toán trên mỗi token, nhờ đó có thể kỳ vọng suy luận nhanh ở batch size nhỏ và throughput cao ở batch size lớn

Mô hình được công bố và hiệu năng benchmark

  • Mixtral 8x7B là mô hình Sparse Mixture-of-Experts (SMoE) với open weights, có thể dùng cho mục đích học thuật và thương mại theo giấy phép Apache 2.0
  • Cả mô hình cơ sở và bản tuân theo chỉ dẫn Mixtral 8x7B – Instruct đều được công bố
  • Có cung cấp mã nguồn và trang web
  • Trên nhiều benchmark, mô hình đạt mức vượt hoặc tương đương Llama 2 70B và GPT-3.5
  • Ở các tác vụ cần toán học, sinh mã và hiểu đa ngôn ngữ, mô hình cho thấy hiệu năng mạnh hơn Llama 2 70B
  • Đã xác nhận rằng mô hình có thể truy xuất thông tin trong cửa sổ ngữ cảnh 32k token bất kể vị trí thông tin và độ dài chuỗi

Kiến trúc sparse mixture-of-experts

  • Mixtral là transformer chỉ dùng decoder, thay khối feedforward của transformer thông thường bằng các lớp Mixture-of-Experts
  • Mạng định tuyến ở mỗi lớp chọn 2 expert trong 8 expert cho từng token
    • Đầu ra của các expert được chọn sẽ được kết hợp bằng tổng có trọng số
    • Việc chọn expert có thể thay đổi ở mỗi timestep
  • Một token có thể truy cập 47B tham số, nhưng tham số hoạt động thực sự dùng trong suy luận là 13B
  • Kiến trúc này nhằm tăng tổng số tham số của mô hình trong khi vẫn kiểm soát chi phí xử lý token và độ trễ

Cách tính toán của lớp MoE

  • Đầu ra của mô-đun MoE được tính bằng tổng có trọng số của đầu ra từ các mạng expert, với trọng số do mạng gating quyết định
  • Nếu vector gating thưa, không cần tính đầu ra của các expert có giá trị gate bằng 0
  • Mixtral áp dụng softmax lên top-K logit của lớp tuyến tính
    • K là siêu tham số quyết định số expert được dùng cho mỗi token
    • Trong Mixtral, K = 2
  • Khi tăng số expert n và giữ nguyên K, có thể tăng tổng số tham số mà vẫn gần như giữ nguyên lượng tính toán trên mỗi token
  • Vì vậy, tổng số tham số thưa và số tham số hoạt động dùng để xử lý từng token được tách biệt với nhau

Triển khai và hiệu quả suy luận

  • Các lớp MoE có thể chạy hiệu quả ngay cả trên một GPU nhờ kernel chuyên dụng
  • Megablocks biểu diễn phép toán FFN của lớp MoE thành một phép nhân ma trận thưa lớn để tăng tốc độ thực thi, đồng thời xử lý cả trường hợp số token phân bổ cho mỗi expert khác nhau
  • Các lớp MoE có thể được phân tán trên nhiều GPU bằng song song mô hình tiêu chuẩn và expert parallelism
    • Các token cần expert cụ thể sẽ được định tuyến tới GPU tương ứng
    • Đầu ra của expert sẽ được trả về vị trí token ban đầu
  • Trong expert parallelism, cần load balancing để phân chia khối lượng công việc đồng đều giữa các GPU
  • Để có thể chạy Mixtral trên stack hoàn toàn open-source, một thay đổi tích hợp kernel CUDA của Megablocks vào dự án vLLM đã được gửi lên, và Skypilot hỗ trợ triển khai endpoint vLLM trên các instance đám mây

Mô hình Instruct và đặc tính đánh giá

  • Mixtral 8x7B – Instruct là mô hình chat được huấn luyện tuân theo chỉ dẫn bằng supervised fine-tuning và direct preference optimization (DPO)
  • Trên benchmark đánh giá bởi con người, mô hình cho thấy hiệu năng cao hơn GPT-3.5 Turbo, Claude-2.1, Gemini Pro và Llama 2 70B-chat
  • Trên các benchmark như BBQ và BOLD, mô hình cho thấy mức độ thiên lệch giảm và hồ sơ cảm xúc cân bằng hơn
  • Nhờ kiến trúc thưa, có thể kỳ vọng tốc độ suy luận nhanh hơn ở batch size nhỏ và throughput cao hơn ở batch size lớn
  • Về mặt cấu trúc, mô hình khác với GShard ở chỗ thay toàn bộ các sub-block FFN bằng lớp MoE, thay vì chỉ thay một phần khối

1 bình luận

 
GN⁺ 2024-01-10
Ý kiến trên Hacker News
  • Bài báo này đi sâu vào một mô hình đã được công khai và sử dụng từ khoảng một tháng trước. Mixtral 8x7B thật sự xuất sắc; kích thước của nó xấp xỉ hạng 13B nhưng được đánh giá cao hơn nhiều so với các mô hình cùng cỡ trên những bảng xếp hạng như https://www.reddit.com/r/LocalLLaMA/comments/1916896/llm_com...
    Ravenwolf nói rằng mô hình này trong thực tế còn nhỉnh hơn một chút so với kết quả ở một số benchmark, và trải nghiệm của tôi cũng vậy. Với một mô hình cỡ này thì nó tốt đến đáng kinh ngạc, và đủ dùng hằng ngày trên Mac cho chat, nhập code và các mục đích khác
    Một điều lộ ra sau khi trọng số được công bố là có khả năng khá cao cả 8 chuyên gia đều được seed từ Mistral 7B rồi sau đó mới phân nhánh. Vì vậy cộng đồng LLM cục bộ đang có nhiều thử nghiệm nhân bản mô hình để tạo chuyên gia với chi phí thấp
    Thông thường người ta nghĩ rằng huấn luyện một mạng 8x7B sẽ cần khối lượng công việc tương đương huấn luyện tám mạng 7B, nhưng có vẻ với Mistral thì không phải vậy, điều này rất thú vị
    Các bài báo như Calm của DeepMind và những thử nghiệm ghép lớp tức thời như Goliath-120b liên tục xuất hiện, nên có vẻ rất có khả năng năm nay sẽ có những cải tiến kiến trúc khá thú vị trong mảng LLM. Calm dường như chỉ ra bước tiếp theo sau MoE, còn các mô hình như Goliath cho thấy một cách triển khai Calm cực kỳ lười biếng — tức chỉ luân phiên dùng toàn bộ các lớp trọng số, không cần kết hợp lớp tuyến tính — cũng có thể mang lại hiệu quả lớn
    Nhìn chung, trong năm 2024, có lẽ ngay trong nửa đầu năm, tôi nghĩ chúng ta sẽ thấy những mô hình mạnh chạy tốt cả trên phần cứng tiêu dùng

    • Tôi cũng thu được kết quả rất tốt với Mixtral, thật sự ấn tượng. Tuy nhiên vì đây là mô hình tương đối lớn nên có vấn đề là khó chạy bằng suy luận hoàn toàn trên GPU trên phần cứng tiêu dùng. Nó khác với các mô hình 7B/13B mà mọi người thường dùng
      Cho đến nay, nền tảng tiêu dùng chính có thể chạy được mà không cần lượng tử hóa cao đến mức làm hỏng chất lượng đầu ra dường như là các máy Mac Apple Silicon đời mới có bộ nhớ hợp nhất, nhìn chung từ 48GB trở lên. Nghe nói 32GB hoặc 36GB cũng chạy được, nhưng không có nhiều dư địa
      Như coder543 đã chỉ ra, nếu dùng cấu hình nhiều GPU có tổng VRAM đủ lớn thì có thể chạy mà không cần lượng tử hóa gây mất mát nhiều hơn
    • Mixtral tốt, nhưng benchmark Ravenwolf thì vô nghĩa. Nó giống như một người ngẫu nhiên nào đó đang cố phát minh lại MMLU bằng tiếng Đức mà không có tính chặt chẽ hay nhất quán
      Ô nhiễm dữ liệu là một vấn đề, nhưng nó không được giải quyết bằng cách để những người hỏi mẹo trên subreddit đánh giá LLM theo kiểu dân gian
    • Tôi đang mong chờ các công bố phần cứng. Có vẻ chắc chắn những sản phẩm được thiết kế có chủ đích cho tăng tốc LLM trên thiết bị dành cho người tiêu dùng đang đến gần
    • Tôi thật sự tò mò khi nào chúng ta sẽ thấy MoE dựa trên các mô hình nhỏ hơn như Phi-2
  • Điểm nổi bật của mô hình này là số tham số được sử dụng thấp ở mức 13B, nên có thể chạy mượt với chất lượng cao trên 3090, đồng thời vượt GPT-3.5 trên HumanEval và còn cung cấp ngữ cảnh 32k
    3090 thuộc phân khúc tiêu dùng và cũng phổ biến trong PC gaming. Tôi hy vọng các nhà phát triển game sẽ bắt đầu thử nghiệm đưa Mixtral triển khai cục bộ vào game. Ví dụ như trong một game kiểu Civilization, mỗi lãnh tụ được vận hành bằng một LLM

    • Mixtral có thể chạy với tốc độ token ổn trên Apple MacBook Pro M1/M2/M3 từ năm 2020 trở đi nếu có RAM từ 32GB trở lên. RAM 16GB cũng chạy được ở mức nào đó, nhưng có lẽ dùng mức lượng tử hóa tương tự như khi chạy trên 3090, và khác biệt do lượng tử hóa có thể cảm nhận được
      Trên M2 Pro của tôi, tốc độ token và độ thông minh cho cảm giác giống GPT-3.5 Turbo. Đây là mô hình đầu tiên tôi thực sự bắt đầu dùng thay cho GPT-3.5, vượt qua mức chỉ nghịch thử vì công nghệ hay
      Apple M2 Pro RAM 32GB có tầm giá tương tự một PC gaming gắn 3090, và đây là một ví dụ khác cho thấy những người bình thường có hệ thống tương đối mạnh có thể “tình cờ” chạy được một mô hình sánh với GPT-3.5
      Nếu bạn có thiết bị Apple đáp ứng điều kiện này và muốn thử nghiệm, LLM Studio là mã nguồn mở và giúp việc bắt đầu dễ dàng: https://lmstudio.ai/
      Hy vọng Mixtral và các mô hình kế tiếp sẽ đem lại nhiều hoạt động hack theo sở thích hơn nữa
    • Theo Google, giá RTX 3090 nằm trong khoảng 1.480–1.680 USD
      Với số tiền đó có thể mua cả một chiếc PC, nên thật khó tin khi nói một GPU đắt như vậy là “dành cho người tiêu dùng” và “phổ biến”
      Có GPU nào tốt cho LLM hoặc AI tạo sinh khác mà không đắt đến vô lý không? Hay có sản phẩm nào được thiết kế riêng cho AI thay vì đồ họa game không?
    • Một điểm cũng quan trọng là các mô hình lượng tử hóa 4-bit có thể chạy trên CPU ở tốc độ gần mức đọc được. Đặc biệt nếu có thể tính trước bất đồng bộ một số kết quả, nó có thể mở ra nhiều trường hợp sử dụng
    • Tôi đang thử dùng mô hình cục bộ làm agent; ai quan tâm nên tìm hiểu tính năng “grammars” của llama.cpp. Nó có thể ép đầu ra của mô hình tuân theo một cấu trúc nhất định, nên không chỉ hữu ích để bảo đảm đầu ra JSON hợp lệ mà còn cho các ràng buộc cụ thể hơn như “nếu chọn x thì cũng phải cung cấp y”
      Ví dụ, có thể yêu cầu một tác tử lập kế hoạch phía trước trả lời bất kỳ ba trong 5W, nhưng vẫn được viết tự do bên trong giá trị chuỗi JSON, để làm ngữ cảnh cho việc chọn một tập hành động bị giới hạn về sau. Hoặc có thể cho mô hình xin thêm thời gian suy nghĩ ở cuối phản hồi, nhưng nếu không xin thì bắt buộc phải chỉ định hành động tiếp theo
      Theo tôi thấy thì nó không ảnh hưởng đến tốc độ sinh và có thể dùng rất sáng tạo. Tuy nhiên nếu đầu ra bị cắt thì có thể cần sinh lại, và tôi đã phải viết riêng một hàm dừng ngay khi một đối tượng JSON hợp lệ được đóng, hoặc khi sinh liên tiếp hơn năm dòng trống. Điều này có thể khác nhau tùy mô hình
    • Mức dùng VRAM gần với mô hình 47B hơn. Dù khi suy luận mỗi lần chỉ dùng 2 chuyên gia, bạn vẫn cần tất cả các chuyên gia để hoàn tất
  • Nếu muốn thử mô hình này, có lẽ một trong những bản được Mozilla/jart phân phối dưới dạng Llamafile sẽ phù hợp

    1. Tải llamafile (30,03GB): https://huggingface.co/jartine/Mixtral-8x7B-Instruct-v0.1-ll...
    2. chmod +x mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
    3. ./mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
      [0] https://hacks.mozilla.org/2023/11/introducing-llamafile/
      [1] https://github.com/Mozilla-Ocho/llamafile#quickstart
  • Trên Mac Silicon có thể chạy bằng Ollama
    https://ollama.ai/
    ollama pull mixtral
    Nếu muốn có web UI giống ChatGPT, xem https://github.com/ollama-webui/ollama-webui
    docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v ollama-webui:/app/backend/data --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:main
    Chỉ cần truy cập http://localhost:3000. Ollama cũng có thể dùng trong LangChain

    • Cũng có vài bản fine-tune đã được mở khóa. Dolphin có vẻ khá phổ biến và được huấn luyện thêm bằng dữ liệu lập trình. Nếu muốn vừa trong 32GB, có https://ollama.ai/library/dolphin-mixtral:8x7b-v2.7-q3_K_M
    • Trên Mac M1, có lẽ tôi sẽ không dùng Docker, dù là Ollama hay host LLM khác. Theo tôi biết thì hiện vẫn chưa có hỗ trợ Metal
  • Các bài liên quan gần đây
    Mixtral of experts - https://news.ycombinator.com/item?id=38598559 - tháng 12 năm 2023, 300 bình luận
    Mistral-8x7B-Chat - https://news.ycombinator.com/item?id=38594578 - tháng 12 năm 2023, 69 bình luận
    Mistral "Mixtral" 8x7B 32k model [magnet] - https://news.ycombinator.com/item?id=38570537 - tháng 12 năm 2023, 239 bình luận

  • Đặc biệt, Mixtral vượt xa Llama 2 70B trong các benchmark về toán, sinh mã và đa ngôn ngữ
    Tôi tò mò xem nó thể hiện thế nào ở toán. Toán luôn có vẻ là một điểm yếu rõ rệt, và có vẻ vẫn là lĩnh vực chưa ai giải quyết hiệu quả

    • Toán, ở mức độ nào đó, là điểm yếu cố hữu của LLM. Dự đoán từ tiếp theo vốn không được tạo ra để giỏi toán
      Tôi không nghĩ vấn đề này sẽ được “giải quyết” chỉ bằng LLM tốt hơn; có lẽ chỉ có thể thông qua các mô hình đa phương thức có khả năng chạy chương trình và truy cập máy tính
  • Tôi không đọc quá nhiều bài báo về LLM, nhưng tôi thấy bài này khá yếu vì thiếu chi tiết. Ý tôi là bản thân bài báo, chứ không phải kết quả của LLM
    Nếu nó được đặt lên bàn tôi để phản biện, có lẽ chỉ riêng lý do đó tôi đã trả lại. Ví dụ, họ không nói rõ đã huấn luyện các chuyên gia như thế nào, dùng bộ dữ liệu nào
    Đây có phải là chuẩn hiện nay của lĩnh vực này không?

    • Điều này đang trở nên khá phổ biến. Hai điểm bạn nhắc tới, tức chi tiết huấn luyện và cách trộn bộ dữ liệu, thực ra gần như là lợi thế cạnh tranh duy nhất mà các công ty có
      Vì mã nguồn và kiến trúc dễ tái tạo, nên bất kỳ nơi nào có đủ tiền đều có thể “dễ dàng” tạo ra một mô hình cạnh tranh
      OpenAI đã khởi đầu xu hướng này và củng cố nó bằng “báo cáo kỹ thuật” GPT-4 thậm chí không nêu cả số lượng tham số của mô hình. Về bộ dữ liệu thì họ đã mơ hồ từ lâu trước đó
    • Đúng, tôi cũng nghĩ vậy. Thực ra tôi đoán họ đã huấn luyện từng chuyên gia riêng rồi sau đó huấn luyện chung. Vì mạng router cũng cần được huấn luyện
      Tôi hoàn toàn không phải chuyên gia LLM, nhưng sẽ rất thú vị nếu biết được đặc biệt là các thiết lập huấn luyện khác nhau ảnh hưởng đến hiệu năng như thế nào
  • Không biết khi nào các mô hình đa phương thức có thể truy cập công khai sẽ bắt đầu xuất hiện
    Sự tiến bộ của các mô hình chỉ văn bản thật đáng kinh ngạc, nhưng nhiều hành vi “nổi lên” của GPT-4 có thể không chỉ do MoE hay số lượng tham số, mà còn do huấn luyện đa phương thức
    Tò mò liệu các mô hình đa phương thức nhỏ hơn có cho thấy bước nhảy tương tự không

    • LLaVA đã được công khai. Tuy nhiên có thể không phải là bước nhảy mà bạn kỳ vọng: https://llava-vl.github.io/
      Meta cũng đã phát hành một mô hình đa phương thức giữa 6 dạng thức theo giấy phép phi thương mại: https://ai.meta.com/blog/imagebind-six-modalities-binding-ai...
    • Theo thử nghiệm nhanh của tôi, CogVLM rất tốt: https://github.com/THUDM/CogVLM
      Trọng số mô hình có vẻ theo giấy phép phi thương mại nên không hẳn là mã nguồn mở thực sự, nhưng đúng với “truy cập công khai” như yêu cầu
      Sẽ thật tốt nếu ai đó huấn luyện từ đầu một mô hình tương thích với CogVLM theo giấy phép mã nguồn mở
    • Theo những gì nghe được từ những người ở FAANG, Google đã đi trước OpenAI ở điểm này, còn OpenAI đang dần bắt kịp. Tất nhiên về mảng ngôn ngữ thì OpenAI vẫn có lợi thế rõ rệt. Tất cả chỉ là chuyện nghe kể lại
  • Không biết có thể chạy mô hình này bằng công cụ LLM của Simon Willison không. Không tìm thấy đề cập đến Mixtral trong issue hay thảo luận
    Ngoài ra có cách nào dễ để thử mô hình này từ dòng lệnh không?

  • Trong một cuộc phỏng vấn podcast gần đây của A16Z, nhà sáng lập Mistral nói rằng nội bộ họ có nhiều mô hình có chất lượng nằm giữa ChatGPT và GPT-4
    Nhìn vào các bản phát hành công khai chất lượng cao cho đến nay, có vẻ đây sẽ là giai đoạn thú vị đối với LLM mã nguồn mở

    • Tuy nhiên không có dấu hiệu nào cho thấy các mô hình Mistral mạnh hơn cũng sẽ được phát hành dưới dạng FOSS