Chào mừng GPT OSS, dòng mô hình mã nguồn mở mới từ OpenAI!

Chào mừng GPT OSS, dòng mô hình mã nguồn mở mới từ OpenAI!

  • 19 min read
Chào mừng GPT OSS, dòng mô hình mã nguồn mở mới từ OpenAI!
Chào mừng GPT OSS, dòng mô hình mã nguồn mở mới từ OpenAI!

Chào mừng GPT OSS, dòng mô hình mã nguồn mở mới từ OpenAI!

GPT OSS là một bản phát hành mã nguồn mở được mong đợi rất nhiều từ OpenAI, được thiết kế để lý luận mạnh mẽ, các tác vụ tác nhân và các trường hợp sử dụng linh hoạt cho nhà phát triển. Nó bao gồm hai mô hình: một mô hình lớn với 117 tỷ tham số (gpt-oss-120b) và một mô hình nhỏ hơn với 21 tỷ tham số (gpt-oss-20b). Cả hai đều là mixture-of-experts (MoE) và sử dụng lược đồ lượng tử hóa 4 bit (MXFP4), cho phép suy luận nhanh (nhờ ít tham số hoạt động hơn, xem chi tiết bên dưới) trong khi vẫn giữ mức sử dụng tài nguyên thấp. Mô hình lớn phù hợp với một GPU H100 duy nhất, trong khi mô hình nhỏ chạy trong vòng 16GB bộ nhớ và hoàn hảo cho phần cứng tiêu dùng và các ứng dụng trên thiết bị.

Để làm cho nó tốt hơn và có tác động hơn nữa đối với cộng đồng, các mô hình được cấp phép theo giấy phép Apache 2.0, cùng với chính sách sử dụng tối thiểu:

Chúng tôi mong muốn các công cụ của mình được sử dụng một cách an toàn, có trách nhiệm và dân chủ, đồng thời tối đa hóa khả năng kiểm soát của bạn đối với cách bạn sử dụng chúng. Bằng cách sử dụng gpt-oss, bạn đồng ý tuân thủ tất cả luật hiện hành.

Theo OpenAI, bản phát hành này là một bước có ý nghĩa trong cam kết của họ đối với hệ sinh thái mã nguồn mở, phù hợp với sứ mệnh đã nêu của họ là làm cho lợi ích của AI có thể truy cập rộng rãi. Nhiều trường hợp sử dụng dựa vào các triển khai riêng tư và/hoặc cục bộ, và chúng tôi tại Hugging Face rất vui mừng chào đón OpenAI đến với cộng đồng. Chúng tôi tin rằng đây sẽ là những mô hình lâu dài, truyền cảm hứng và có tác động.

Mục lục

Tổng quan về Khả năng và Kiến trúc

  • Tổng cộng 21B và 117B tham số, với 3,6B và 5,1B tham số hoạt động, tương ứng.
  • Lược đồ lượng tử hóa 4-bit sử dụng định dạng mxfp4. Chỉ áp dụng trên trọng số MoE. Như đã nêu, 120B phù hợp với một GPU 80 GB duy nhất và 20B phù hợp với một GPU 16GB duy nhất.
  • Mô hình chỉ có văn bản, lý luận; với chuỗi suy nghĩ và mức độ nỗ lực suy luận có thể điều chỉnh.
  • Hỗ trợ sử dụng công cụ và tuân theo hướng dẫn.
  • Triển khai suy luận bằng cách sử dụng transformers, vLLM, llama.cpp và ollama.
  • Responses API được khuyến nghị để suy luận.
  • Giấy phép: Apache 2.0, với chính sách sử dụng bổ sung nhỏ.

Kiến trúc

  • MoE lựa chọn mã thông báo với các kích hoạt SwiGLU.
  • Khi tính toán trọng số MoE, một softmax được thực hiện trên các chuyên gia đã chọn (softmax-after-topk).
  • Mỗi lớp chú ý sử dụng RoPE với ngữ cảnh 128K.
  • Các lớp chú ý thay thế: toàn bộ ngữ cảnh và cửa sổ trượt 128 mã thông báo.
  • Các lớp chú ý sử dụng attention sink được học trên mỗi đầu, trong đó mẫu số của softmax có một giá trị cộng thêm.
  • Nó sử dụng cùng một trình mã hóa thông báo như GPT-4o và các mô hình OpenAI API khác.
    • Một số mã thông báo mới đã được tích hợp để cho phép khả năng tương thích với Responses API.

Truy cập API thông qua các nhà cung cấp suy luận

Các mô hình OpenAI GPT OSS có thể truy cập thông qua dịch vụ Inference Providers của Hugging Face, cho phép bạn gửi yêu cầu đến bất kỳ nhà cung cấp được hỗ trợ nào bằng cùng một mã JavaScript hoặc Python. Đây là cùng một cơ sở hạ tầng cung cấp năng lượng cho bản demo chính thức của OpenAI trên gpt-oss.com và bạn có thể sử dụng nó cho các dự án của riêng mình.

Dưới đây là một ví dụ sử dụng Python và nhà cung cấp Cerebras siêu nhanh. Để biết thêm thông tin và các đoạn mã bổ sung, hãy kiểm tra phần nhà cung cấp suy luận trong thẻ mô hìnhhướng dẫn chuyên dụng mà chúng tôi đã tạo cho các mô hình này.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.environ["HF_TOKEN"],
)

completion = client.chat.completions.create(
    model="openai/gpt-oss-120b:cerebras",
    messages=[
        {
            "role": "user",
            "content": "How many rs are in the word 'strawberry'?",
        }
    ],
)

print(completion.choices[0].message)

Inference Providers cũng triển khai Responses API tương thích với OpenAI, giao diện OpenAI tiên tiến nhất cho các mô hình trò chuyện, được thiết kế để tương tác linh hoạt và trực quan hơn. Dưới đây là một ví dụ sử dụng Responses API với nhà cung cấp Fireworks AI. Để biết thêm chi tiết, hãy xem dự án responses.js mã nguồn mở.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.getenv("HF_TOKEN"),
)

response = client.responses.create(
    model="openai/gpt-oss-20b:fireworks-ai",
    input="How many rs are in the word 'strawberry'?",
)

print(response)

Suy luận cục bộ

Sử dụng Transformers

Bạn cần cài đặt bản phát hành transformers mới nhất (v4.55 trở lên), cũng như acceleratekernels:

pip install --upgrade accelerate transformers kernels

Trọng số mô hình được lượng tử hóa ở định dạng mxfp4, tương thích với GPU của các dòng Hopper hoặc Blackwell. Điều này bao gồm các thẻ trung tâm dữ liệu như H100, H200 hoặc GB200, cũng như các GPU tiêu dùng mới nhất trong dòng 50xx. Nếu bạn có một trong các thẻ này, mxfp4 sẽ mang lại kết quả tốt nhất về tốc độ và mức tiêu thụ bộ nhớ. Để sử dụng nó, bạn cần triton 3.4triton_kernels. Nếu các thư viện này không được cài đặt (hoặc bạn không có GPU tương thích), việc tải mô hình sẽ quay trở lại bfloat16, được giải nén từ trọng số đã lượng tử hóa.

Trong các thử nghiệm của chúng tôi, Triton 3.4 hoạt động tốt với phiên bản PyTorch mới nhất (2.7.x). Bạn có thể tùy chọn cài đặt PyTorch 2.8 thay thế – đó là phiên bản tiền phát hành tại thời điểm viết bài (mặc dù nó sẽ sớm được phát hành), nhưng đó là phiên bản đã được chuẩn bị cùng với triton 3.4, vì vậy chúng ổn định cùng nhau. Dưới đây là cách cài đặt PyTorch 2.8 (đi kèm với triton 3.4) và các kernel triton:

# Bước tùy chọn nếu bạn muốn PyTorch 2.8, nếu không chỉ cần `pip install torch`
pip install torch==2.8.0 --index-url https://download.pytorch.org/whl/test/cu128

# Cài đặt triton kernels để hỗ trợ mxfp4
pip install git+https://github.com/triton-lang/triton.git@main#subdirectory=python/triton_kernels

Đoạn mã sau đây cho thấy suy luận đơn giản với mô hình 20B. Nó chạy trên GPU 16 GB khi sử dụng mxfp4 hoặc ~48 GB trong bfloat16.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
)

messages = [
    {"role": "user", "content": "How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

Flash Attention 3

Các mô hình sử dụng attention sink, một kỹ thuật mà nhóm vLLM đã làm cho tương thích với Flash Attention 3. Chúng tôi đã đóng gói và tích hợp kernel được tối ưu hóa của họ trong kernels-community/vllm-flash-attn3. Tại thời điểm viết bài, kernel siêu nhanh này đã được kiểm tra trên các thẻ Hopper với PyTorch 2.7 và 2.8. Chúng tôi hy vọng sẽ tăng cường phạm vi bảo hiểm trong những ngày tới. Nếu bạn chạy các mô hình trên thẻ Hopper (ví dụ: H100 hoặc H200), bạn cần pip install --upgrade kernels và thêm dòng sau vào đoạn mã của mình:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
+    # Flash Attention with Sinks
+    attn_implementation="kernels-community/vllm-flash-attn3",
)

messages = [
    {"role": "user", "content": "How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

Đoạn mã này sẽ tải xuống mã kernel được tối ưu hóa, được biên dịch trước từ kernels-community, như được giải thích trong bài đăng trên blog trước đây của chúng tôi. Nhóm transformers đã xây dựng, đóng gói và kiểm tra mã, vì vậy bạn hoàn toàn có thể sử dụng nó một cách an toàn.

Các tối ưu hóa khác

Nếu bạn có GPU Hopper trở lên, chúng tôi khuyên bạn nên sử dụng mxfp4 vì những lý do đã giải thích ở trên. Nếu bạn có thể sử dụng thêm Flash Attention 3, thì hãy bật nó!

Nếu GPU của bạn không tương thích với mxfp4, thì chúng tôi khuyên bạn nên sử dụng kernel MegaBlocks MoE để tăng tốc độ tốt. Để làm như vậy, bạn chỉ cần điều chỉnh mã suy luận của mình như sau:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
+    # Optimize MoE layers with downloadable` MegaBlocksMoeMLP
+    use_kernels=True,
)

messages = [
    {"role": "user", "content": "How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

Kernel MoE được tối ưu hóa của MegaBlocks yêu cầu mô hình chạy trên bfloat16, vì vậy mức tiêu thụ bộ nhớ sẽ cao hơn so với chạy trên mxfp4. Chúng tôi khuyên bạn nên sử dụng mxfp4 nếu bạn có thể, nếu không, hãy chọn MegaBlocks thông qua use_kernels=True.

Hỗ trợ AMD ROCm

OpenAI GPT OSS đã được xác minh trên phần cứng AMD Instinct và chúng tôi rất vui mừng thông báo hỗ trợ ban đầu cho nền tảng ROCm của AMD trong thư viện kernel của chúng tôi, đặt nền tảng cho các kernel ROCm được tối ưu hóa sắp tới trong Transformers. Khả năng tăng tốc kernel MegaBlocks MoE đã có sẵn cho OpenAI GPT OSS trên AMD Instinct (ví dụ: dòng MI300), cho phép hiệu suất đào tạo và suy luận tốt hơn. Bạn có thể kiểm tra nó với cùng một mã suy luận được hiển thị ở trên.

AMD cũng đã chuẩn bị một Không gian Hugging Face để người dùng thử mô hình trên phần cứng AMD.

Tóm tắt các Tối ưu hóa có sẵn

Tại thời điểm viết bài, bảng này tóm tắt các đề xuất của chúng tôi dựa trên khả năng tương thích GPU và các thử nghiệm của chúng tôi. Chúng tôi hy vọng Flash Attention 3 (với attention sink) sẽ tương thích với các GPU bổ sung.

Mặc dù mô hình 120B phù hợp với một GPU H100 duy nhất (sử dụng mxfp4), bạn cũng có thể chạy nó dễ dàng trên nhiều GPU bằng cách sử dụng accelerate hoặc torchrun. Transformers cung cấp một kế hoạch song song hóa mặc định và bạn cũng có thể tận dụng các kernel chú ý được tối ưu hóa. Đoạn mã sau đây có thể được chạy với torchrun --nproc_per_node=4 generate.py trên một hệ thống có 4 GPU:

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.distributed import DistributedConfig
import torch

model_path = "openai/gpt-oss-120b"
tokenizer = AutoTokenizer.from_pretrained(model_path, padding_side="left")

device_map = {
    "tp_plan": "auto",    # Bật song song hóa Tensor
}

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype="auto",
    attn_implementation="kernels-community/vllm-flash-attn3",
    **device_map,
)

messages = [
     {"role": "user", "content": "Explain how expert parallelism works in large language models."}
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=1000)

# Giải mã và in
response = tokenizer.decode(outputs[0])
print("Model response:", response.split("<|channel|>final<|message|>")[-1].strip())

Các mô hình OpenAI GPT OSS đã được đào tạo rộng rãi để tận dụng việc sử dụng công cụ như một phần trong nỗ lực lý luận của chúng. Mẫu trò chuyện mà chúng tôi đã tạo cho transformers cung cấp rất nhiều tính linh hoạt, vui lòng xem phần chuyên dụng của chúng tôi sau trong bài đăng này.

Llama.cpp

Llama.cpp cung cấp hỗ trợ MXFP4 gốc với Flash Attention, mang lại hiệu suất tối ưu trên nhiều backend khác nhau như Metal, CUDA và Vulkan, ngay từ bản phát hành ngày 0.

Để cài đặt nó, hãy làm theo hướng dẫn trong kho lưu trữ Github của llama.cpp.

# MacOS
brew install llama.cpp

# Windows
winget install llama.cpp

Cách được khuyến nghị là sử dụng nó thông qua llama-server:

llama-server -hf ggml-org/gpt-oss-120b-GGUF -c 0 -fa --jinja --reasoning-format none

# Sau đó, truy cập http://localhost:8080

Chúng tôi hỗ trợ cả mô hình 120B và 20B. Để biết thêm thông tin chi tiết, hãy truy cập PR này hoặc bộ sưu tập mô hình GGUF.

vLLM

Như đã đề cập, vLLM đã phát triển các kernel Flash Attention 3 được tối ưu hóa hỗ trợ chú ý sink, vì vậy bạn sẽ nhận được kết quả tốt nhất trên các thẻ Hopper. Cả Chat Completion và Responses API đều được hỗ trợ. Bạn có thể cài đặt và khởi động máy chủ với đoạn mã sau đây, giả định sử dụng 2 GPU H100:

vllm serve openai/gpt-oss-120b --tensor-parallel-size 2

Hoặc, sử dụng trực tiếp trong Python như:

from vllm import LLM
llm = LLM("openai/gpt-oss-120b", tensor_parallel_size=2)
output = llm.generate("San Francisco is a")

transformers serve

Bạn có thể sử dụng transformers serve để thử nghiệm cục bộ với các mô hình, mà không cần bất kỳ phụ thuộc nào khác. Bạn có thể khởi chạy máy chủ chỉ bằng:

transformers serve

Mà bạn có thể gửi các yêu cầu bằng cách sử dụng Responses API.

# responses API
curl -X POST http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-d '{"input": [{"role": "system", "content": "hello"}], "temperature": 1.0, "stream": true, "model": "openai/gpt-oss-120b"}'

Bạn cũng có thể gửi các yêu cầu bằng cách sử dụng Completions API tiêu chuẩn:

# completions API
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "system", "content": "hello"}], "temperature": 1.0, "max_tokens": 1000, "stream": true, "model": "openai/gpt-oss-120b"}'

Tinh chỉnh

Các mô hình GPT OSS được tích hợp đầy đủ với trl. Chúng tôi đã phát triển một vài ví dụ tinh chỉnh bằng cách sử dụng SFTTrainer để giúp bạn bắt đầu:

  • Một ví dụ LoRA trong sổ tay nấu ăn OpenAI, cho thấy cách có thể tinh chỉnh mô hình để lý luận bằng nhiều ngôn ngữ.
  • Một tập lệnh tinh chỉnh cơ bản mà bạn có thể điều chỉnh cho phù hợp với nhu cầu của mình.

Triển khai trên các đối tác Hugging Face

Azure

Hugging Face hợp tác với Azure trên Danh mục Mô hình AI của Azure để mang các mô hình mã nguồn mở phổ biến nhất — trải rộng trên văn bản, hình ảnh, giọng nói và các tác vụ đa phương thức — trực tiếp vào môi trường của khách hàng để triển khai an toàn vào các điểm cuối trực tuyến được quản lý, tận dụng cơ sở hạ tầng cấp doanh nghiệp, tự động mở rộng quy mô và giám sát của Azure.

Các mô hình GPT OSS hiện có sẵn trên Danh mục Mô hình AI của Azure (GPT OSS 20B, GPT OSS 120B), sẵn sàng được triển khai đến các điểm cuối trực tuyến để suy luận theo thời gian thực.

Dell

Dell Enterprise Hub là một cổng thông tin trực tuyến an toàn giúp đơn giản hóa việc đào tạo và triển khai các mô hình AI mở mới nhất tại chỗ bằng cách sử dụng các nền tảng của Dell. Được phát triển với sự hợp tác của Dell, nó cung cấp các container được tối ưu hóa, hỗ trợ gốc cho phần cứng Dell và các tính năng bảo mật cấp doanh nghiệp.

Các mô hình GPT OSS hiện có sẵn trên Dell Enterprise Hub, sẵn sàng được triển khai tại chỗ bằng cách sử dụng các nền tảng của Dell.

Đánh giá mô hình

Các mô hình GPT OSS là các mô hình lý luận: do đó, chúng yêu cầu kích thước tạo rất lớn (số lượng mã thông báo mới tối đa) để đánh giá, vì quá trình tạo của chúng sẽ chứa lý luận trước, sau đó là câu trả lời thực tế. Sử dụng kích thước tạo quá nhỏ có nguy cơ làm gián đoạn dự đoán ở giữa quá trình lý luận, điều này sẽ gây ra âm tính giả. Dấu vết lý luận sau đó cần được loại bỏ khỏi câu trả lời của mô hình trước khi tính toán các số liệu, để tránh lỗi phân tích cú pháp, đặc biệt là với các đánh giá về toán học hoặc hướng dẫn.

Dưới đây là một ví dụ về cách đánh giá các mô hình bằng lighteval (bạn cần cài đặt từ nguồn).

git clone https://github.com/huggingface/lighteval
pip install -e .[dev] # đảm bảo bạn đã cài đặt đúng phiên bản transformers!
lighteval accelerate \
    "model_name=openai/gpt-oss-20b,max_length=16384,skip_special_tokens=False,generation_parameters={temperature:1,top_p:1,top_k:40,min_p:0,max_new_tokens:16384}" \ 
    "extended|ifeval|0|0,lighteval|aime25|0|0" \
    --save-details --output-dir "openai_scores" \
    --remove-reasoning-tags --reasoning-tags="[('<|channel|>analysis<|message|>', '<|end|><|start|>assistant<|channel|>final<|message|>')]" 

Đối với mô hình 20B, điều này sẽ cung cấp cho bạn 69,5 (+/-1,9) cho IFEval (lời nhắc nghiêm ngặt) và 63,3 (+/-8,9) cho AIME25 (trong pass@1), các điểm số nằm trong phạm vi dự kiến đối với một mô hình lý luận có kích thước này.

Nếu bạn muốn thực hiện tập lệnh đánh giá tùy chỉnh của mình, lưu ý rằng để lọc ra các thẻ lý luận một cách chính xác, bạn sẽ cần sử dụng skip_special_tokens=False trong tokenizer, để nhận được dấu vết đầy đủ trong đầu ra của mô hình (để lọc lý luận bằng cùng các cặp chuỗi như trong ví dụ trên) - bạn có thể khám phá lý do bên dưới.

Trò chuyện và các mẫu trò chuyện

OpenAI GPT OSS sử dụng khái niệm “kênh” trong các đầu ra của nó. Hầu hết thời gian, bạn sẽ thấy một kênh “phân tích” chứa những thứ không nhằm mục đích gửi cho người dùng cuối, như các chuỗi suy nghĩ và một kênh “cuối cùng” chứa các tin nhắn thực sự có ý định hiển thị cho người dùng.

Giả sử không có công cụ nào đang được sử dụng, cấu trúc của đầu ra mô hình trông như thế này:

<|start|>assistant<|channel|>analysis<|message|>CHAIN_OF_THOUGHT<|end|><|start|>assistant<|channel|>final<|message|>ACTUAL_MESSAGE

Hầu hết thời gian, bạn nên bỏ qua mọi thứ ngoại trừ văn bản sau <|channel|>final<|message|>. Chỉ văn bản này nên được thêm vào cuộc trò chuyện dưới dạng tin nhắn của trợ lý hoặc hiển thị cho người dùng. Tuy nhiên, có hai ngoại lệ đối với quy tắc này: Bạn có thể cần phải bao gồm các tin nhắn phân tích trong lịch sử trong quá trình đào tạo hoặc nếu mô hình đang gọi các công cụ bên ngoài.

Khi đào tạo: Nếu bạn đang định dạng các ví dụ cho đào tạo, bạn thường muốn đưa chuỗi suy nghĩ vào tin nhắn cuối cùng. Vị trí thích hợp để làm điều này là trong khóa suy nghĩ.

chat = [
    {"role": "user", "content": "Hi there!"},
    {"role": "assistant", "content": "Hello!"},
    {"role": "user", "content": "Can you think about this one?"},
    {"role": "assistant", "thinking": "Thinking real hard...", "content": "Okay!"}
]

# add_generation_prompt=False thường chỉ được sử dụng trong đào tạo, không phải suy luận
inputs = tokenizer.apply_chat_template(chat, add_generation_prompt=False)

Bạn có thể thoải mái bao gồm các khóa suy nghĩ trong các lượt trước đó hoặc khi bạn đang thực hiện suy luận hơn là đào tạo, nhưng chúng thường sẽ bị bỏ qua. Mẫu trò chuyện sẽ chỉ bao gồm chuỗi suy nghĩ gần đây nhất và chỉ trong quá trình đào tạo (khi add_generation_prompt=False và lượt cuối cùng là một lượt của trợ lý).

Lý do chúng tôi làm theo cách này là rất tế nhị: Các mô hình OpenAI gpt-oss đã được đào tạo trên dữ liệu nhiều lượt trong đó tất cả các chuỗi suy nghĩ trừ chuỗi suy nghĩ cuối cùng đã bị loại bỏ. Điều này có nghĩa là khi bạn muốn tinh chỉnh một mô hình OpenAI gpt-oss, bạn nên làm tương tự.

  • Hãy để mẫu trò chuyện loại bỏ tất cả các chuỗi suy nghĩ trừ chuỗi suy nghĩ cuối cùng
  • Che nhãn trên tất cả các lượt trừ lượt trợ lý cuối cùng, nếu không bạn sẽ đào tạo nó trên các lượt trước đó mà không có chuỗi suy nghĩ, điều này sẽ dạy nó phát ra các phản hồi mà không cần CoT. Điều này có nghĩa là bạn không thể đào tạo trên toàn bộ cuộc trò chuyện nhiều lượt làm một mẫu duy nhất; thay vào đó, bạn phải chia nó thành một mẫu cho mỗi lượt trợ lý chỉ với lượt trợ lý cuối cùng không bị che mỗi lần, để mô hình có thể học hỏi từ mỗi lượt trong khi vẫn chỉ thấy chính xác một chuỗi suy nghĩ trên tin nhắn cuối cùng mỗi lần.

Tin nhắn Hệ thống và Nhà phát triển

OpenAI GPT OSS là bất thường vì nó phân biệt giữa tin nhắn “hệ thống” và tin nhắn “nhà phát triển” khi bắt đầu cuộc trò chuyện, nhưng hầu hết các mô hình khác chỉ sử dụng “hệ thống”. Trong GPT OSS, tin nhắn hệ thống tuân theo một định dạng nghiêm ngặt và chứa thông tin như ngày hiện tại, danh tính mô hình và mức độ nỗ lực suy luận để sử dụng, và tin nhắn “nhà phát triển” tự do hơn, điều này làm cho nó (rất khó hiểu) tương tự như các tin nhắn “hệ thống” của hầu hết các mô hình khác.

Để giúp GPT OSS dễ sử dụng hơn với API tiêu chuẩn, mẫu trò chuyện sẽ coi một tin nhắn có vai trò “hệ thống” hoặc “nhà phát triển” là tin nhắn nhà phát triển. Nếu bạn muốn sửa đổi tin nhắn hệ thống thực tế, bạn có thể truyền các đối số cụ thể model_identity hoặc reasoning_effort cho mẫu trò chuyện:

chat = [
    {"role": "system", "content": "This will actually become a developer message!"}
]

tokenizer.apply_chat_template(
    chat, 
    model_identity="You are OpenAI GPT OSS.",
    reasoning_effort="high"  # Mặc định là "medium", nhưng cũng chấp nhận "high" và "low"
)

Sử dụng công cụ với Transformers

GPT OSS hỗ trợ hai loại công cụ: Các công cụ “tích hợp” trình duyệtpython và các công cụ tùy chỉnh do người dùng cung cấp. Để kích hoạt các công cụ tích hợp, hãy truyền tên của chúng trong một danh sách cho đối số builtin_tools của mẫu trò chuyện, như được hiển thị bên dưới. Để truyền các công cụ tùy chỉnh, bạn có thể truyền chúng dưới dạng lược đồ JSON hoặc dưới dạng các hàm Python với các gợi ý loại và docstring bằng cách sử dụng đối số tools. Xem tài liệu công cụ mẫu trò chuyện để biết thêm chi tiết hoặc bạn chỉ cần sửa đổi ví dụ bên dưới:

def get_current_weather(location: str):
    """
    Trả về trạng thái thời tiết hiện tại tại một địa điểm nhất định dưới dạng một chuỗi.

    Args:
        location: Địa điểm để lấy thời tiết.
    """
    return "Terrestrial."  # Chúng tôi chưa bao giờ nói đây là một công cụ thời tiết tốt

chat = [
    {"role": "user", "content": "What's the weather in Paris right now?"}
]

inputs = tokenizer.apply_chat_template(
    chat, 
    tools=[weather_tool], 
    builtin_tools=["browser", "python"],


### [Link bài viết gốc](https://huggingface.co/blog/welcome-openai-gpt-oss)

Recommended for You

Giới thiệu AI Sheets- một công cụ để làm việc với các bộ dữ liệu bằng cách sử dụng các mô hình AI mở!

Giới thiệu AI Sheets- một công cụ để làm việc với các bộ dữ liệu bằng cách sử dụng các mô hình AI mở!

Những gì tôi đã học được khi nâng cấp ảnh Midjourney đường dài với Stable Diffusion PLUS mở hộp Qwen Image & Wan 2.2

Những gì tôi đã học được khi nâng cấp ảnh Midjourney đường dài với Stable Diffusion PLUS mở hộp Qwen Image & Wan 2.2

Những gì tôi đã học được khi nâng cấp ảnh Midjourney đường dài với Stable Diffusion PLUS mở hộp Qwen Image & Wan 2.2