Downloads · 30 days
6
25% of all-time downloads
jester6136/nuextract_lora_373_v15fix_r32_eps_4
nuextract_lora_373_v15fix_r32_eps_4 is a machine learning model from jester6136. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for peft.
LoRA adapter cho NuExtract3 (fine-tune tầng ngôn ngữ, r=32/alpha=32 (rsLoRA), KHÔNG merge — nạp qua --lora-modules lúc serve), train trên bộ 373 hồ sơ bankekhaitaisanthunhaphangnam (kê khai tài sản/thu nhập hàng năm),…
Downloads · 30 days
6
25% of all-time downloads
All-time downloads
24
Public
Repo size
280 MB
Likes
0
Public
Click a slice to open those files.
.safetensors260 MB · 93%
From the Hugging Face model README
LoRA adapter cho NuExtract3 (fine-tune tầng ngôn ngữ, r=32/alpha=32 (rsLoRA), KHÔNG merge —
nạp qua --lora-modules lúc serve), train trên bộ 373 hồ sơ ban_ke_khai_tai_san_thu_nhap_hang_nam
(kê khai tài sản/thu nhập hàng năm), địa chỉ đã gộp thành 1 chuỗi verbatim theo ai-parsany#72.
Đây là checkpoint epoch 4/5 trên dataset v15_fix — bản schema đã BỎ 2 field
quốc_gia và nguồn_gốc_hình_thành (khỏi schema v15 gốc) — mỗi _eps_N là 1 bản lưu ĐỘC LẬP tại
cuối epoch N (train liên tục epoch 1→N, không phải N lần train riêng).
| Epoch | Baseline acc | LoRA acc | Chênh lệch |
|---|---|---|---|
| 1 | 0.644 (1383/2148) | 0.820 (1762/2148) | +0.176 |
| 2 | 0.649 (1459/2248) | 0.831 (1867/2248) | +0.182 |
| 3 | 0.655 (1508/2304) | 0.844 (1945/2304) | +0.189 |
| 4 | 0.654 (1493/2282) | 0.851 (1943/2282) ⭐ (tốt nhất) | +0.197 |
| 5 | 0.650 (1356/2085) | 0.850 (1772/2085) | +0.200 |
Kết luận: cả 5 epoch đều cải thiện rất mạnh so với baseline (+18-20pp accuracy), McNemar p-value = 0.0000 ở mọi epoch (khác biệt không phải nhiễu). Accuracy LoRA tăng đều từ epoch 1→4 (0.820 → 0.851), sau đó chững lại ở epoch 5 (0.850, thấp hơn epoch 4 trong biên độ nhiễu) — dấu hiệu điển hình của hội tụ/bắt đầu bão hoà. Epoch 4 là lựa chọn tốt nhất (cao nhất, và field-bịa thấp tương đương các epoch khác); epoch 5 dùng được nếu cần nhưng không có lợi thêm so với epoch 4.
So với dòng v15 (không fix, có quốc_gia/nguồn_gốc_hình_thành) trước đó — dòng v15_fix (bỏ 2
field này) đạt accuracy CAO HƠN RÕ RỆT (epoch tốt nhất ~0.85 so với ~0.84 của dòng v15/r32 cũ),
phù hợp với kỳ vọng: bỏ field khó/nhiễu giúp model tập trung học tốt các field còn lại.
adapter_model.safetensors + adapter_config.json — trọng số LoRA (PEFT, r=32/rsLoRA).template.json — schema NuExtract BẮT BUỘC truyền lúc suy luận (không có schema này, model
không biết cấu trúc JSON cần trích xuất).chat_template.jinja, processor_config.json, tokenizer* — processor gốc kèm theo lúc train.vllm==0.22.1)# Repo PRIVATE — cần token đọc được repo này
export HF_TOKEN=hf_xxx
huggingface-cli download jester6136/nuextract_lora_373_v15fix_r32_eps_4 --local-dir ./adapter_eps_4
vllm serve /path/to/NuExtract3 \
--served-model-name nuextract \
--enable-lora \
--lora-modules nuextract-lora=./adapter_eps_4 \
--max-lora-rank 32 \
--trust-remote-code \
--dtype bfloat16 \
--port 8001
(Nếu vLLM báo lỗi Could not find nvcc lúc khởi động: máy không có CUDA toolkit, chỉ có driver —
set thêm VLLM_USE_FLASHINFER_SAMPLER=0 và VLLM_USE_DEEP_GEMM=0 trước khi vllm serve, né JIT
compile kernel không cần thiết cho model bf16 này.)
Lưu ý --max-lora-rank: adapter này train với r=32 (rsLoRA) — PHẢI set --max-lora-rank 32
(hoặc lớn hơn), set 16 như các adapter r=16 khác sẽ LOAD LỖI.
template=/chat_template_kwargs= là quy ước RIÊNG của REST API (vLLM/litellm expose) — KHÔNG
giống lời gọi processor.apply_chat_template trực tiếp bằng Python (ở đó truyền template= là
kwarg cấp cao nhất, không bọc trong chat_template_kwargs).
import json, openai
template = json.load(open("template.json", encoding="utf-8"))
client = openai.OpenAI(base_url="http://localhost:8001/v1", api_key="none")
resp = client.chat.completions.create(
model="nuextract-lora",
messages=[{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_b64}"}}
]}],
extra_body={"chat_template_kwargs": {"template": json.dumps(template, ensure_ascii=False),
"enable_thinking": False}},
temperature=0.0,
max_tokens=8192, # 4096 mặc định có thể TRUNCATE output với record dài nhiều thực thể
)
print(resp.choices[0].message.content) # chuỗi JSON theo đúng template.json
| Accuracy | tp | n | |
|---|---|---|---|
| Baseline | 0.654 | 1493 | 2282 |
| LoRA | 0.851 | 1943 | 2282 |
Bất đối xứng (McNemar): baseline-đúng-lora-sai=78 · baseline-sai-lora-đúng=528
McNemar exact p-value (2 phía): 0.0000
⇒ ĐẠT ngưỡng deploy (p<0.05, cải thiện có ý nghĩa thống kê)
Field bịa ngoài schema, SAU khi đã áp conform_to_template (diagnostic — ai-parsany#52): baseline=261 · lora=26. ⚠ Đã kiểm thật (2026-08-20, sample 3 hồ sơ): pipeline eval này áp conform_to_template (src/parsany/label_schema.py, ĐÚNG thứ tự production extract_op.py:211) TRƯỚC khi chấm — xoá khoá thừa/sửa kiểu lệch (khoảng nửa số trên chỉ là khoá rỗng vô hại do khác quy ước ghi dữ liệu, không phải bịa). Nhưng ~nửa còn lại là bịa THẬT, TỚI TAY người dùng: model tự thêm nguyên 1 dòng bảng (vd biến_động tăng_thêm[]/chứng_khoán[]) khi hồ sơ gốc KHÔNG có dòng nào — conform_to_template không xoá được (không biết đúng bao nhiêu dòng), score_leaves cũng không trừ điểm (gold rỗng → không so khớp) — xem docstring _n_extraneous.
| Trường | n | Baseline | LoRA | Δ |
|---|---|---|---|---|
tài_sản.tài_sản_có_giá_trị_khác[].ghi_chú | 15 | 0.267 | 0.000 | -0.267 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].số_dư_tại_thời_điểm_kê_khai | 5 | 0.000 | 0.000 | +0.000 |
tài_sản.tài_sản_có_giá_trị_khác[].đơn_vị_tính | 3 | 0.000 | 0.000 | +0.000 |
tài_sản.chứng_khoán.giấy_tờ_có_giá_khác[].tài_liệu_chứng_minh | 3 | 1.000 | 0.000 | -1.000 |
con_chưa_thành_niên[].nơi_ở_hiện_tại | 2 | 0.500 | 0.000 | -0.500 |
người_kê_khai.nơi_ở_hiện_tại | 2 | 0.500 | 0.000 | -0.500 |
vợ_chồng.nơi_ở_hiện_tại | 2 | 0.500 | 0.000 | -0.500 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_người_kê_khai.thu_nhập_lương_phụ_cấp | 2 | 0.500 | 0.000 | -0.500 |
tài_sản.tài_sản_có_giá_trị_khác[].hiện_trạng_quản_lý | 2 | 0.000 | 0.000 | +0.000 |
tài_sản.tài_khoản_ở_nước_ngoài[].số_tài_khoản | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tài_khoản_ở_nước_ngoài[].tên_ngân_hàng_tổ_chức | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tài_khoản_ở_nước_ngoài[].ghi_chú | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tài_khoản_ở_nước_ngoài[].tên_chủ_tài_khoản | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_vợ_chồng.thu_nhập_kinh_doanh_khác | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].ghi_chú | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].tài_liệu_chứng_minh | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].loại_tài_khoản | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].số_tài_khoản | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].số_tiền_ngoại_tệ | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].đơn_vị_ngoại_tệ | 1 | 0.000 | 0.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_cho_vay[].ghi_chú | 1 | 1.000 | 0.000 | -1.000 |
tài_sản.tài_sản_có_giá_trị_khác[].số_lượng | 10 | 0.200 | 0.200 | +0.000 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].ghi_chú | 32 | 0.469 | 0.219 | -0.250 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].ghi_chú | 12 | 0.333 | 0.250 | -0.083 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].hiện_trạng_quản_lý | 10 | 0.600 | 0.300 | -0.300 |
biến_động_tài_sản_thu_nhập.tăng_thêm[].mô_tả_tài_sản_thu_nhập | 26 | 0.308 | 0.308 | +0.000 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].hiện_trạng_quản_lý | 11 | 0.364 | 0.364 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].tên_ngân_hàng | 5 | 0.200 | 0.400 | +0.200 |
tài_sản.tiền_mặt_và_tiền_gửi.tài_khoản_ngân_hàng[].đơn_vị_tiền_tệ | 5 | 0.000 | 0.400 | +0.400 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_gửi[].ghi_chú | 5 | 0.400 | 0.400 | +0.000 |
biến_động_tài_sản_thu_nhập.giảm_đi[].lý_do_giảm | 5 | 0.200 | 0.400 | +0.200 |
biến_động_tài_sản_thu_nhập.giảm_đi[].mô_tả_tài_sản_thu_nhập | 5 | 0.200 | 0.400 | +0.200 |
biến_động_tài_sản_thu_nhập.tăng_thêm[].giải_trình_nguồn_gốc | 17 | 0.353 | 0.412 | +0.059 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].vị_trí | 34 | 0.382 | 0.500 | +0.118 |
người_kê_khai.ngạch_công_chức | 2 | 0.000 | 0.500 | +0.500 |
vợ_chồng.nơi_thường_trú | 26 | 0.308 | 0.577 | +0.269 |
con_chưa_thành_niên[].nơi_thường_trú | 32 | 0.406 | 0.625 | +0.219 |
người_kê_khai.nơi_thường_trú | 33 | 0.394 | 0.636 | +0.242 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].vị_trí | 63 | 0.556 | 0.698 | +0.143 |
tài_sản.tài_sản_có_giá_trị_khác[].nhóm_tài_sản | 38 | 0.737 | 0.763 | +0.026 |
biến_động_tài_sản_thu_nhập.tăng_thêm[].nhóm_tài_sản_tham_chiếu | 26 | 0.731 | 0.769 | +0.038 |
vợ_chồng.nơi_làm_việc | 22 | 0.727 | 0.773 | +0.045 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].số_giấy_chứng_nhận_sở_hữu | 33 | 0.818 | 0.788 | -0.030 |
biến_động_tài_sản_thu_nhập.tăng_thêm[].giá_trị | 24 | 0.750 | 0.792 | +0.042 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.tổng_cộng.tổng | 26 | 0.769 | 0.808 | +0.038 |
người_kê_khai.giấy_tờ_tùy_thân.nơi_cấp | 31 | 0.871 | 0.839 | -0.032 |
tài_sản.tài_sản_có_giá_trị_khác[].tên_tài_sản | 38 | 0.763 | 0.842 | +0.079 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].loại_đất | 63 | 0.905 | 0.857 | -0.048 |
chữ_ký[].tên_người_ký | 64 | 0.688 | 0.859 | +0.172 |
tài_sản.tài_sản_có_giá_trị_khác[].giá_trị | 37 | 0.784 | 0.865 | +0.081 |
người_kê_khai.nơi_làm_việc | 33 | 0.848 | 0.879 | +0.030 |
biến_động_tài_sản_thu_nhập.tăng_thêm[].đơn_vị_tiền_tệ | 26 | 0.000 | 0.885 | +0.885 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].số_giấy_chứng_nhận_quyền_sử_dụng_đất | 62 | 0.903 | 0.887 | -0.016 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_gửi[].số_dư_tại_thời_điểm_kê_khai | 9 | 1.000 | 0.889 | -0.111 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_gửi[].đơn_vị_tiền_tệ | 9 | 0.000 | 0.889 | +0.889 |
tài_sản.tài_sản_có_giá_trị_khác[].số_đăng_ký | 30 | 0.867 | 0.900 | +0.033 |
con_chưa_thành_niên[].giấy_tờ_tùy_thân.số_giấy_tờ_tùy_thân | 10 | 0.800 | 0.900 | +0.100 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].diện_tích_m2 | 63 | 0.873 | 0.905 | +0.032 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_người_kê_khai.tổng | 32 | 0.875 | 0.906 | +0.031 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_vợ_chồng.tổng | 24 | 0.875 | 0.917 | +0.042 |
tài_sản.tiền_mặt_và_tiền_gửi.tổng_số_tiền | 12 | 0.667 | 0.917 | +0.250 |
tài_sản.tài_sản_có_giá_trị_khác[].đơn_vị_tiền_tệ | 38 | 0.000 | 0.921 | +0.921 |
tài_sản.tài_sản_gắn_liền_với_đất.cây_lâu_năm[].loại_cây | 13 | 0.923 | 0.923 | +0.000 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].loại_nhà_ở | 30 | 0.933 | 0.933 | +0.000 |
người_kê_khai.chức_vụ | 33 | 0.909 | 0.939 | +0.030 |
người_kê_khai.họ_và_tên | 33 | 0.848 | 0.939 | +0.091 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].giá_trị | 42 | 0.762 | 0.952 | +0.190 |
vợ_chồng.giấy_tờ_tùy_thân.nơi_cấp | 24 | 0.917 | 0.958 | +0.042 |
con_chưa_thành_niên[].họ_và_tên | 32 | 0.969 | 0.969 | +0.000 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].diện_tích_sử_dụng_m2 | 34 | 0.971 | 0.971 | +0.000 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].số_thứ_tự_thửa_đất | 63 | 0.857 | 0.984 | +0.127 |
tài_sản.quyền_sử_dụng_đất.các_thửa_đất[].đơn_vị_tiền_tệ | 63 | 0.000 | 0.984 | +0.984 |
chữ_ký[].vai_trò_người_ký | 64 | 1.000 | 1.000 | +0.000 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].đơn_vị_tiền_tệ | 34 | 0.000 | 1.000 | +1.000 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].số_thứ_tự_nhà | 34 | 1.000 | 1.000 | +0.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_chung.đơn_vị_tiền_tệ | 33 | 0.000 | 1.000 | +1.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_con_chưa_thành_niên.đơn_vị_tiền_tệ | 33 | 0.000 | 1.000 | +1.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_người_kê_khai.đơn_vị_tiền_tệ | 33 | 0.000 | 1.000 | +1.000 |
thông_tin_văn_bản.ngày_kê_khai | 33 | 0.939 | 1.000 | +0.061 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.tổng_cộng.đơn_vị_tiền_tệ | 33 | 0.000 | 1.000 | +1.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_vợ_chồng.đơn_vị_tiền_tệ | 33 | 0.000 | 1.000 | +1.000 |
người_kê_khai.ngày_sinh | 33 | 0.970 | 1.000 | +0.030 |
thông_tin_văn_bản.hình_thức_kê_khai | 33 | 1.000 | 1.000 | +0.000 |
con_chưa_thành_niên[].ngày_sinh | 32 | 1.000 | 1.000 | +0.000 |
con_chưa_thành_niên[].số_thứ_tự_con | 32 | 1.000 | 1.000 | +0.000 |
người_kê_khai.giấy_tờ_tùy_thân.số_giấy_tờ_tùy_thân | 31 | 1.000 | 1.000 | +0.000 |
người_kê_khai.giấy_tờ_tùy_thân.ngày_cấp | 31 | 1.000 | 1.000 | +0.000 |
vợ_chồng.họ_và_tên | 26 | 1.000 | 1.000 | +0.000 |
vợ_chồng.ngày_sinh | 26 | 1.000 | 1.000 | +0.000 |
vợ_chồng.giấy_tờ_tùy_thân.ngày_cấp | 24 | 1.000 | 1.000 | +0.000 |
vợ_chồng.nghề_nghiệp_chức_vụ | 24 | 0.958 | 1.000 | +0.042 |
vợ_chồng.giấy_tờ_tùy_thân.số_giấy_tờ_tùy_thân | 24 | 0.958 | 1.000 | +0.042 |
tài_sản.nhà_ở_và_công_trình.nhà_ở[].giá_trị | 24 | 0.833 | 1.000 | +0.167 |
tài_sản.tài_sản_gắn_liền_với_đất.cây_lâu_năm[].số_lượng | 13 | 1.000 | 1.000 | +0.000 |
tài_sản.tài_sản_gắn_liền_với_đất.cây_lâu_năm[].đơn_vị_tiền_tệ | 13 | 0.000 | 1.000 | +1.000 |
tài_sản.tài_sản_gắn_liền_với_đất.cây_lâu_năm[].giá_trị | 13 | 1.000 | 1.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.đơn_vị_tiền_tệ | 12 | 0.000 | 1.000 | +1.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_gửi[].loại_tiền_gửi | 9 | 0.000 | 1.000 | +1.000 |
con_chưa_thành_niên[].giấy_tờ_tùy_thân.nơi_cấp | 9 | 0.889 | 1.000 | +0.111 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_chung.tổng | 7 | 1.000 | 1.000 | +0.000 |
con_chưa_thành_niên[].giấy_tờ_tùy_thân.ngày_cấp | 7 | 1.000 | 1.000 | +0.000 |
biến_động_tài_sản_thu_nhập.giảm_đi[].đơn_vị_tiền_tệ | 5 | 0.000 | 1.000 | +1.000 |
biến_động_tài_sản_thu_nhập.giảm_đi[].nhóm_tài_sản_tham_chiếu | 5 | 0.600 | 1.000 | +0.400 |
biến_động_tài_sản_thu_nhập.giảm_đi[].giá_trị | 5 | 0.800 | 1.000 | +0.200 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_mặt_tại_nhà[].số_tiền | 4 | 0.250 | 1.000 | +0.750 |
tài_sản.chứng_khoán.giấy_tờ_có_giá_khác[].đơn_vị_tiền_tệ | 3 | 0.000 | 1.000 | +1.000 |
tài_sản.chứng_khoán.giấy_tờ_có_giá_khác[].giá_trị | 3 | 1.000 | 1.000 | +0.000 |
tài_sản.chứng_khoán.giấy_tờ_có_giá_khác[].tên_giấy_tờ | 3 | 1.000 | 1.000 | +0.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_người_kê_khai.thu_nhập_kinh_doanh_khác | 1 | 0.000 | 1.000 | +1.000 |
tài_sản.thu_nhập_giữa_hai_lần_kê_khai.thu_nhập_con_chưa_thành_niên.tổng | 1 | 1.000 | 1.000 | +0.000 |
tài_sản.tiền_mặt_và_tiền_gửi.tiền_cho_vay[].số_tiền | 1 | 1.000 | 1.000 | +0.000 |