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
- Chạy — chỉ 2 lệnh
- Nếu máy dùng PBS (
qsub) — KHÔNG chạy train/eval trên node đăng nhập - Nếu máy có giới hạn walltime (ví dụ 12 giờ/lần)
- Trình tự lệnh đầy đủ (bản 2×H100 80GB — thêm
GPUS=0,1; nếu 4 GPU thì bỏGPUS=) - Không cần clone git, không cần cài gì
- Yêu cầu
- Script làm gì
- Kết quả cần gửi lại
- Lưu ý bình thường (không phải lỗi)
- Nếu cần dừng
- Cập nhật 2026-09-04 (v3)
- Cập nhật 2026-09-04 (v4) — chỉ train, hai nhánh tuần tự
- Cập nhật 2026-09-05 (v5)
- v7 (09/9): sửa lỗi DDP
unrecognized arguments: --local-rank
- Chạy — chỉ 2 lệnh
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)
mkdir -p ~/scratch/projects ~/scratch/datasets
curl -fL https://huggingface.co/giahuythai/secondlook-a100/resolve/main/bootstrap.sh | bash -s ~/scratch/projects/secondlook_pkg
cd ~/scratch/projects/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 &
# Số GPU tự nhận từ CUDA_VISIBLE_DEVICES (PBS/SLURM) hoặc nvidia-smi; muốn ép: GPUS=0,1,2 bash run.sh
Nếu máy dùng PBS (qsub) — KHÔNG chạy train/eval trên node đăng nhập
cd ~/scratch/projects/secondlook_pkg
qsub run_job.pbs # chạy lại đúng lệnh này sau mỗi lần hết walltime; script tự resume
bash status.sh # xem tiến độ; log ở logs/, kết quả ở results/ (đều trong thư mục gói)
run_job.pbs đã đặt: GPU theo CUDA_VISIBLE_DEVICES của scheduler, 4 thread + 4 dataloader worker mỗi GPU,
mọi cache/tmp trong thư mục gói (không ghi ~/.cache, /tmp), PYTHONNOUSERSITE=1. Sửa 4 dòng #PBS đầu file theo hệ thống.
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.
Trình tự lệnh đầy đủ (bản 2×H100 80GB — thêm GPUS=0,1; nếu 4 GPU thì bỏ GPUS=)
# 0) Lấy gói (1 lần)
mkdir -p ~/scratch/projects ~/scratch/datasets
curl -fL https://huggingface.co/giahuythai/secondlook-a100/resolve/main/bootstrap.sh | bash -s ~/scratch/projects/secondlook_pkg
cd ~/scratch/projects/secondlook_pkg
# 1) Kiểm tra máy chạy được model (~3 phút, cần GPU)
GPUS=0,1 bash run.sh check
# 2) Tải nuScenes + sinh infos (~350GB, nhiều giờ) — KHÔNG cần GPU, chạy được trên node CPU
nohup env ALLOW_DOWNLOAD=1 bash run.sh data > data_console.log 2>&1 &
# 3) Train (2 phiên walltime 12h) rồi eval — chạy lại ĐÚNG lệnh này sau mỗi lần hết giờ
nohup env GPUS=0,1 bash run.sh > run_console.log 2>&1 &
# (run.sh tự chạy tiếp 16 cell eval bổ sung sau 3 cell chính — không cần lệnh riêng)
# Xem tiến độ bất cứ lúc nào
bash status.sh
Nếu hệ thống dùng SLURM (sbatch), không cần nohup & — đặt lệnh vào job script và
chạy foreground; hết walltime thì sbatch lại cùng script (hoặc dùng --requeue):
#!/bin/bash
#SBATCH --gres=gpu:2 --time=12:00:00 --job-name=secondlook
cd ~/scratch/projects/secondlook_pkg && GPUS=0,1 bash run.sh
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 | 2, 3 hoặc 4 GPU (4×≥40GB, hoặc 2–3×80GB như H100). Script tự chọn batch/GPU (4 GPU: 4/GPU = MoME gốc 16; 3 GPU: 5/GPU = 15; 2 GPU: 8/GPU) và tự giảm batch nếu OOM, 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ờ) rồi 16 cell bổ sung (7 giờ, lỗi ở đây không chặn đóng gói). - Đó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 + đủ 19 cell 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.
Cập nhật 2026-09-04 (v3)
- Thêm arm
camlooka0(CameraLook-only, clean-anchor 0):sed -i 's/^export ARM=.*/export ARM="camlooka0"/' run_job.pbs && qsub run_job.pbs. Mỗi ARM có thư mục kết quả và stage riêng nên có thể chạy tuần tự nhiều job trên cùng gói. - extras: thêm wheel h5py + stub distortion.py (cell crosstalk cần); extra_eval chấm điểm offline từ preds nếu bước scoring nuScenes chết sau khi ghi kết quả.
Cập nhật 2026-09-04 (v4) — chỉ train, hai nhánh tuần tự
run_job.pbsmặc địnhARMS="c1 camlooka0"vàTRAIN_ONLY=1: train C1 rồi CameraLook-only anchor 0, KHÔNG eval; mỗi nhánh xong tạoRESULTS_secondlook_<ARM>.tar.gz(chỉ epoch_6.pth + log, ~400MB). Hết walltime thìqsub run_job.pbslại, script tự resume và bỏ qua nhánh đã xong; fileDONE_ALLxuất hiện khi cả hai xong.- Muốn eval trên máy mượn:
TRAIN_ONLY=0 qsub -v TRAIN_ONLY run_job.pbs(hoặc sửa dòng export).
Cập nhật 2026-09-05 (v5)
- Sửa smoke test: dùng
total_epochs=1(config MoME không córunner→runner.max_epochsgâyKeyError: 'type'). run_job.pbsmặc địnhARMS="sl2only c1 camlooka0", chỉ train (TRAIN_ONLY=1). Nhánh xong →RESULTS_secondlook_<ARM>.tar.gz; nếuHF_TOKENđược điền (token ghi, phạm vi repo này) thì tự upload lênresults/của repo HF; nhóm nghiên cứu tự kéo về.
v7 (09/9): sửa lỗi DDP unrecognized arguments: --local-rank
torch>=2.0 truyền --local-rank (gạch ngang) khi dùng torch.distributed.launch, còn tools/train.py/tools/test.py của MoME chỉ nhận --local_rank. Gói chuyển sang torch.distributed.run (rank qua biến môi trường, đường mà train.py đã hỗ trợ). Trước khi train, run.sh tự chạy bước LAUNCHER CHECK với đúng số GPU; lệnh train đầy đủ và 15 dòng cuối log khi lỗi được ghi vào logs/run.log.