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)
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-from checkpoint 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ì

  1. Preflight — kiểm GPU/driver/đĩa, dừng ngay với thông báo rõ nếu thiếu.
  2. Giải nén môi trường Python đã đóng gói sẵn (không build, không tải).
  3. Tìm nuScenes ở các vị trí thông dụng, kiểm số lượng file.
  4. Sinh file infos (~30–60 phút, chỉ một lần).
  5. 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.
  6. Train 6 epoch DDP 4 GPU (~20 giờ), tự lưu checkpoint và tự resume nếu đứt.
  7. 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).
  8. Đó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 UserWarning củ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.pbs mặc định ARMS="c1 camlooka0" và TRAIN_ONLY=1: train C1 rồi CameraLook-only anchor 0, KHÔNG eval; mỗi nhánh xong tạo RESULTS_secondlook_<ARM>.tar.gz (chỉ epoch_6.pth + log, ~400MB). Hết walltime thì qsub run_job.pbs lại, script tự resume và bỏ qua nhánh đã xong; file DONE_ALL xuấ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_epochs gây KeyError: 'type').
  • run_job.pbs mặc định ARMS="sl2only c1 camlooka0", chỉ train (TRAIN_ONLY=1). Nhánh xong → RESULTS_secondlook_<ARM>.tar.gz; nếu HF_TOKEN được điền (token ghi, phạm vi repo này) thì tự upload lên results/ 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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support