# Label Studio: một lệnh Docker để chuyên gia của khách tự làm bộ dữ liệu vàng

> Eval của bạn chỉ đáng tin bằng những đáp án mà người hiểu nghề nhất bên khách hàng đã ký tên, và công cụ mã nguồn mở này giúp họ ký tên mà không phải động đến một dòng code.

Bản gốc: https://fdetimes.net/vi/cong-cu/label-studio-gan-nhan-voi-chuyen-gia-cua-khach/

Trong một dự án AI ở chỗ khách hàng, người biết đáp án đúng gần như không bao giờ là người viết code. Thường đó là chuyên viên pháp chế, bác sĩ hay trưởng ca chăm sóc khách hàng. Họ không mở được notebook, mà cũng chẳng nên phải mở.

Nếu muốn họ ngồi gán nhãn hai trăm mẫu, bạn cần đưa cho họ một giao diện đủ dễ dùng. Đó chính là khoảng trống Label Studio được làm ra để lấp: HumanSignal giới thiệu đây là nền tảng mã nguồn mở cho gán nhãn dữ liệu, đánh giá AI và các quy trình human-in-the-loop.

Với một FDE, việc công cụ là mã nguồn mở và chạy từ một container có ý nghĩa thực tế. Bạn có thể dựng nó trên một máy nằm trong hạ tầng của khách, nên dữ liệu nhạy cảm không nhất thiết phải rời khỏi đó.

Việc FDE gặp nhiều nhất với công cụ này là xây **bộ dữ liệu vàng** (golden set), tức tập mẫu có đáp án được chuyên gia xác nhận. Cả eval lẫn fine-tuning về sau đều dựa vào nó.

## Bạn cần đến nó khi nào?

Dấu hiệu rõ nhất là khi cuộc họp với khách bắt đầu xoay quanh câu "model trả lời thế này đúng hay sai?" mà không ai có câu trả lời thống nhất. Lúc đó thứ còn thiếu không phải model tốt hơn, mà là một tập đáp án được người trong nghề chốt.

Tài liệu của HumanSignal cảnh báo rằng nếu không review chất lượng dữ liệu đã gán nhãn, những nhãn yếu có thể lọt vào quá trình huấn luyện model. Với eval, cái giá còn đắt hơn: bạn sẽ chấm model bằng một thước đo sai mà không biết.

Label Studio cũng nối được với model ML, vừa để model đề xuất nhãn trước cho con người duyệt, vừa để đánh giá model. Vì vậy cùng một instance có thể đi theo bạn từ lúc làm dữ liệu đến lúc chấm điểm.

## Một golden set trong một buổi chiều

Thử hình dung bạn đang làm trợ lý trả lời email cho bộ phận hỗ trợ của một hãng bảo hiểm. Mục tiêu của buổi chiều: 200 email thật, email nào cũng có một nhãn ý định mà trưởng nhóm đồng ý là đúng.

**Bước một: dựng máy chủ.** Tài liệu cài đặt chính thức và trang image trên Docker Hub đều đưa ra cùng một lệnh `docker run`. Viết xuống dòng cho dễ đọc, nó trông như sau:

```bash
docker run -it \
  -v $(pwd)/golden-set:/label-studio/data \
  -p 8080:8080 \
  heartexlabs/label-studio:latest
```

Lệnh này mở cổng 8080 và gắn một thư mục trên máy vào `/label-studio/data`, để dữ liệu không mất khi container dừng. Tài liệu đặt tên thư mục là `mydata`; ở đây đổi thành `golden-set` cho dễ nhận ra. Nếu không dùng Docker, có thể cài bằng `pip install label-studio`.

**Bước hai: tạo project và giao diện.** Mở `localhost:8080`, tạo tài khoản rồi đăng nhập. Mọi việc gán nhãn diễn ra trong một project, nên bạn tạo project trước.

Khi cấu hình project, bạn có thể chọn một template có sẵn làm điểm xuất phát rồi sửa lại. Hãy lấy template phân loại văn bản, thay danh sách nhãn bằng các ý định mà chính trưởng nhóm đặt tên. Dùng từ ngữ của khách, đừng dùng từ ngữ của kỹ sư.

**Bước ba: hai chuyên gia gán nhãn độc lập** trên cùng 200 email. Tài liệu cho biết các cụm task có độ đồng thuận thấp có thể cho thấy task gây khó hiểu, và đồng thuận giữa người gán nhãn có thể dùng để chốt ground truth.

Lưu ý: việc đặt số người gán nhãn cho mỗi mẫu (overlap) chỉ có ở bản trả phí. Trên bản Community, hãy tạo hai project cùng dữ liệu, mỗi chuyên gia làm trong một project, rồi so hai bộ nhãn bằng script.

Giả sử 170 email được hai người gán cùng nhãn và 30 email bị lệch. Ba mươi email lệch là thứ quý nhất bạn thu được trong ngày, vì chúng chỉ ra chỗ định nghĩa nhãn còn mơ hồ.

**Bước bốn: xem lại ca lệch rồi chốt ground truth.** Ngồi cùng hai chuyên gia xem từng ca, sửa hướng dẫn, rồi mới đánh dấu đáp án cuối. Một dòng hướng dẫn sau khi sửa có thể là: "Email vừa hỏi về phí vừa đòi huỷ hợp đồng: gán nhãn Huỷ hợp đồng, vì đó là việc phải xử lý trước."

Tính năng đánh dấu annotation thuộc bộ ground truth cũng nằm ở bản trả phí. Trên bản Community, hãy ghi đáp án đã chốt vào script so sánh ở bước ba, để file đó trở thành nguồn sự thật thay cho giao diện.

**Điểm mấu chốt:** Những mẫu mà hai chuyên gia bất đồng cho bạn biết nhiều hơn những mẫu họ đồng ý.

**Bước năm: nối sang eval.** Từ những mẫu đầu tiên, hãy viết luôn một script nhỏ chuyển kết quả gán nhãn sang định dạng mà bộ eval của bạn đọc, đừng để đến cuối. Cách đơn giản nhất là mỗi dòng JSONL chỉ giữ ba trường: mã task, nội dung và nhãn vàng.

```json
{"task_id": 17, "text": "Tôi muốn huỷ hợp đồng, và sao tháng này phí lại tăng?", "gold_label": "Huỷ hợp đồng"}
{"task_id": 18, "text": "Cho tôi hỏi hạn đóng phí kỳ tới là ngày nào?", "gold_label": "Hỏi về phí"}
```

Khi chấy eval, script chỉ cần cho model đọc `text`, so câu trả lời với `gold_label` và giữ `task_id` để lần ngược về đúng email trong Label Studio. Giữ được `task_id` là bạn mở lại được ca model sai ngay trước mặt chuyên gia.

## Giới hạn nào cần nói với khách từ đầu?

Giới hạn lớn nhất nằm ở phiên bản. Theo trang so sánh các bản của Label Studio, overlap, phân công reviewer và đánh dấu ground truth đều thuộc bản trả phí; hướng dẫn đo đồng thuận giữa người gán nhãn cũng ghi rõ cần sản phẩm trả phí.

Cách xoay xở bằng hai project và script vẫn chạy được, nhưng hãy nói rõ với khách trước khi hứa hẹn quy trình.

Giới hạn tiếp theo: mỗi task chỉ có một annotation được đặt làm ground truth. Nếu một email có hai cách hiểu đều chấp nhận được, bạn buộc phải chọn một, nên hãy quyết định từ trước là chấm theo kiểu khớp chính xác hay theo rubric.

Đồng thuận cao cũng chỉ là dấu hiệu chứ chưa phải bằng chứng. Hai người được đào tạo cùng một cách vẫn có thể cùng sai theo một kiểu, nên đừng báo cáo con số đồng thuận như thể đó là độ chính xác.

Cái bẫy cuối cùng là pre-labeling. Để model đề xuất nhãn trước rồi người duyệt lại giúp tiết kiệm thời gian với dữ liệu huấn luyện. Nhưng với golden set dùng để chấm chính model đó, người duyệt dễ bị gợi ý của model dẫn dắt, nên hãy để chuyên gia gán nhãn từ đầu ít nhất với tập eval.

## Học gì trước, ghi gì vào CV?

Thứ nên học trước không phải cú pháp cấu hình mà là cách viết hướng dẫn gán nhãn: định nghĩa từng nhãn, ví dụ ở vùng ranh giới, và quy tắc cho những ca khó. Công cụ chỉ ghi lại phán đoán của chuyên gia, còn hướng dẫn mới định hình phán đoán đó.

Sau đó hãy tập trọn vòng lặp: dựng instance, sửa template, gán nhãn với hai người, xem ca lệch rồi nối kết quả sang script eval. Biết rõ bản Community làm được đến đâu cũng là một kỹ năng, vì nó quyết định bạn hứa gì với khách.

Khi viết CV hoặc phỏng vấn cho vị trí FDE, một câu như "dựng quy trình gán nhãn với hai chuyên gia của khách, 200 mẫu, đưa độ đồng thuận lên sau hai vòng sửa hướng dẫn" cho thấy bạn biết biến kiến thức nghiệp vụ thành dữ liệu đo lường được. Trong mô tả công việc, hãy để ý các cụm như "golden dataset", "human evaluation" hay "annotation workflow".

Model sẽ được thay mới vài lần trong vòng đời dự án. Bộ dữ liệu vàng do chính chuyên gia của khách ký tên thì vẫn dùng được qua tất cả những lần đó.

**Thử ngay tuần này:**

- Chạy lệnh docker run trên máy của bạn, tạo tài khoản và một project, chọn template phân loại văn bản rồi sửa nhãn theo một bài toán thật mà bạn từng gặp.
- Lấy 30 mẫu, nhờ hai đồng nghiệp gán nhãn độc lập, ghi lại những mẫu hai người lệch nhau và viết lại hướng dẫn gán nhãn từ chính những mẫu đó.
- Thêm vào CV một dòng mô tả cụ thể: bạn đã dựng quy trình gán nhãn cho bao nhiêu mẫu, với mấy chuyên gia, và độ đồng thuận thay đổi ra sao sau khi sửa hướng dẫn.

## Nguồn

- [Open Source Data Labeling and AI Evaluation | Label Studio](https://labelstud.io/)

- [Label Studio Documentation — Install and Upgrade Label Studio](https://labelstud.io/guide/install)

- [heartexlabs/label-studio - Docker Hub](https://hub.docker.com/r/heartexlabs/label-studio)

- [Getting Started With Label Studio: A Step-By-Step Guide](https://labelstud.io/learn/getting-started-with-label-studio/setting-up-label-studio)

- [Set up your labeling project](https://labelstud.io/guide/setup_project)

- [Compare Label Studio Editions](https://labelstud.io/guide/label_studio_compare)

- [Review annotations in Label Studio](https://docs.humansignal.com/guide/quality)

- [How to Measure Inter-Annotator Agreement and Build Human Consensus with Label Studio](https://docs.humansignal.com/tutorials/how_to_measure_inter_annotator_agreement_and_build_human_consensus)

- [Integrate Label Studio into your machine learning pipeline](https://labelstud.io/guide/ml)
