Nội dung bài viết
© 2025 AI VIET NAM. All rights reserved.
Tác giả: AI VIET NAM (AI VIET NAM)
Keywords: torch.no_grad, đánh giá mô hình, inference PyTorch, tắt gradient, evaluation mode
Khi bắt đầu làm việc với PyTorch, nhiều bạn phân vân giữa hai trạng thái:
Huấn luyện
trainingevaluation / inferenceTới bước đánh giá mô hình, câu hỏi quen thuộc xuất hiện: “Lúc đánh giá có cần tắt gradient không? Nếu có thì dùng như thế nào?”
Câu trả lời là có, và PyTorch hỗ trợ điều này bằng cú pháp:
with torch.no_grad():Bài viết dưới đây giải thích bản chất, cách dùng đúng và lý do nên sử dụng — theo hướng dễ hiểu, không nặng công thức.
torch.no_grad()context managerKhi nằm trong khối này:
Kết quả:
inferenceKhái niệm này liên quan đến nhóm kiến thức về backpropagation, autograd và tối ưu hóa — những nội dung nền trong các module Pre-Deep Learning và Deep Learning.
Trong giai đoạn evaluation/inference, mô hình chỉ dự đoán chứ không học nữa.
Do đó:
Nếu không dùng no_grad():
backward()Vì vậy, luôn dùng
torch.no_grad()Cách dùng rất đơn giản: bọc toàn bộ phần dự đoán trong khối no_grad.
with torch.no_grad(): Model chuyển sang eval mode Đưa input vào model để dự đoán Thu kết quả output
Thông thường trong pipeline:
model.eval()torch.no_grad()Hai bước này luôn đi chung với nhau khi evaluation.
PyTorch vẫn lưu graph dù không cần → dễ tràn bộ nhớ.
Do graph tracking hoạt động như lúc training.
Inference server thường yêu cầu tắt gradient để tối ưu.
Nếu vô tình gọi backward ở validation step → báo lỗi vì graph không giữ được.
Bạn làm một dự án phân loại ảnh trong module Computer Vision:
Nếu không dùng
torch.no_grad()Khi thêm
torch.no_grad()Khi xây loop cho validation hoặc inference:
model.eval()with torch.no_grad()Bạn có thể thử nghiệm thêm để hiểu rõ hơn.
Có cần dùng no_grad trong training không?
Không, vì training cần gradient để tối ưu.
Chỉ dùng model.eval() thôi có đủ không?
Không, model.eval() không tắt gradient. Cần thêm no_grad().
no_grad có làm mô hình yếu hơn không?
Không, chỉ tắt gradient — không ảnh hưởng chất lượng dự đoán.
Dùng no_grad có phải lúc nào cũng đúng khi inference không?
Đúng, vì inference không cần backprop.
Q: Mình con số 0 thì học nổi không?
A: Chỉ cần có thời gian học mỗi ngày. Kiến thức và tài liệu team admin lo.
Q: Ai dạy AIO?
A: Toàn bộ admin AIO trực tiếp dạy và hỗ trợ trong suốt hành trình.
Q: Admin có “xịn” không?
A: Admin đều là người làm nghề thật. Không dám nói xịn, chỉ dạy bằng hết sức mình.
Q: AIO khác gì trung tâm khác?
A: AIO không phải trung tâm. Đây là dự án học tập cộng đồng với tinh thần “Cùng nhau học – cùng nhau khổ – cùng nhau lớn”.