YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
SecondLook — gói chạy trên 4×A100
Cảm ơn anh/chị đã cho mượn máy. Gói này tự chứa hoàn toàn: không cần sudo,
không cài gì vào hệ thống, không đụng môi trường Python sẵn có của máy.
Chạy — chỉ 2 lệnh
# Lấy gói về (tự tải ~7.5GB từ HuggingFace, không cần cài gì trước)
curl -fL https://huggingface.co/giahuythai/secondlook-a100/resolve/main/bootstrap.sh | bash
cd ~/secondlook_pkg
# 1) Kiểm tra máy — ~3 phút, KHÔNG cần dữ liệu
bash run.sh check
# 2) Chuẩn bị dữ liệu (tải nuScenes ~350GB + sinh infos). KHÔNG dùng GPU.
nohup env ALLOW_DOWNLOAD=1 bash run.sh data > data_console.log 2>&1 &
# 3) Train + eval. Chạy lại ĐÚNG lệnh này sau mỗi lần hết walltime.
nohup bash run.sh > run_console.log 2>&1 &
Nếu máy có giới hạn walltime (ví dụ 12 giờ/lần)
Không sao — script resume được ở mọi bước. Cứ chạy lại đúng lệnh ở bước 3, nó tự nhận ra đã làm tới đâu và đi tiếp:
- Tải dữ liệu: resume từng gói (đã tải xong gói nào thì bỏ qua gói đó).
- Sinh infos: chỉ làm một lần.
- Train: lưu checkpoint mỗi 2000 vòng lặp (~45 phút), tự
--resume-fromcheckpoint mới nhất. Mất tối đa ~45 phút công mỗi lần bị cắt. - Eval: xong cell nào bỏ qua cell đó.
Train cần tổng cộng ~19 giờ GPU, nên với walltime 12h thì khoảng 2 lần chạy là xong (chưa kể lần chạy cho bước 2). Không cần làm gì thêm ngoài việc chạy lại cùng một lệnh.
Chạy bash run.sh check trước là quan trọng: nó dựng model và nạp checkpoint
bằng chính GPU của máy, cho biết ngay máy có chạy được không, trước khi tốn
công tải 350GB dữ liệu.
Xem tiến độ bất cứ lúc nào
bash status.sh # bảng tóm tắt: bước nào xong, đang làm gì, GPU, kết quả
watch -n30 bash status.sh # tự cập nhật mỗi 30 giây
tail -f logs/run.log # log chi tiết
Về dữ liệu nuScenes
Script tự tìm ở các vị trí thông dụng. Nếu máy đã có sẵn:
NUSCENES_ROOT=/duong/dan/toi/nuscenes bash run.sh
Nếu máy chưa có, script tải giúp từ nguồn chính chủ của Motional (~350GB, tải từng gói rồi giải nén và xoá ngay nên đỉnh đĩa ~360GB chứ không 700GB):
ALLOW_DOWNLOAD=1 bash run.sh
Script không bao giờ tự ý tải nếu anh/chị không bật cờ này.
Không cần clone git, không cần cài gì
Toàn bộ mã nguồn, thư viện và checkpoint đều nằm trong gói tải từ HuggingFace.
bootstrap.sh tải về đủ; không cần git clone, không cần pip install,
không cần conda, không đụng gì tới môi trường sẵn có của máy.
Yêu cầu
| Mục | Cần |
|---|---|
| GPU | 4 × A100 (40GB hoặc 80GB), driver ≥ 525 |
| Đĩa trống | ≥ 60 GB (môi trường 14GB + checkpoint) |
| Dữ liệu | nuScenes full trainval (v1.0-trainval + samples + sweeps) |
| Mạng | Không cần (trừ khi bật tuỳ chọn gửi log về) |
Script làm gì
- Preflight — kiểm GPU/driver/đĩa, dừng ngay với thông báo rõ nếu thiếu.
- Giải nén môi trường Python đã đóng gói sẵn (không build, không tải).
- Tìm nuScenes ở các vị trí thông dụng, kiểm số lượng file.
- Sinh file infos (~30–60 phút, chỉ một lần).
- SMOKE TEST 50 vòng lặp trên 1 GPU. Thất bại thì dừng hẳn — không đốt GPU vô ích.
- Train 6 epoch DDP 4 GPU (~20 giờ), tự lưu checkpoint và tự resume nếu đứt.
- Eval 3 cell chính (~3 giờ).
- Đóng gói kết quả thành
RESULTS_secondlook.tar.gz(~400MB).
Mọi bước đều idempotent: chạy lại bash run.sh sẽ tiếp tục từ chỗ dừng,
không làm lại từ đầu.
Kết quả cần gửi lại
Một file duy nhất: RESULTS_secondlook.tar.gz (checkpoint + log + số đo).
Nếu có sự cố, chỉ cần gửi logs/run.log — trong đó có toàn bộ chẩn đoán.
Lưu ý bình thường (không phải lỗi)
- Khi nạp checkpoint, script báo "thiếu 106 key, thừa 84 key" — đúng như thiết kế: 106 key là tham số của module mới (chưa huấn luyện), 84 key là nhánh không dùng trong checkpoint gốc.
- Nhiều cảnh báo
UserWarningcủa numpy/mmcv — vô hại.
Nếu cần dừng
pkill -f train_sl2only — checkpoint đã lưu vẫn nguyên; chạy lại bash run.sh
sẽ tiếp tục từ epoch gần nhất, không làm lại từ đầu.