Kiểm soát cách dọn sạch tài nguyên TensorFlow khi không còn cần thiết.
Tất cả tài nguyên được phân bổ trong EagerSession
sẽ bị xóa khi đóng phiên. Để ngăn ngừa lỗi hết bộ nhớ, bạn nên dọn sạch các tài nguyên đó trong phiên. Ví dụ: thực hiện n thao tác trong một vòng lặp gồm m lần lặp sẽ phân bổ tối thiểu n*m tài nguyên trong khi trong hầu hết các trường hợp, chỉ các tài nguyên của lần lặp cuối cùng vẫn được sử dụng.
Các phiên bản EagerSession
có thể được thông báo theo nhiều cách khác nhau khi các đối tượng TensorFlow không còn được giới thiệu nữa, do đó, chúng có thể tiến hành dọn sạch mọi tài nguyên mà chúng sở hữu.
Phương pháp kế thừa
Giá trị liệt kê
trận chung kết tĩnh công khai EagerSession.ResourceCleanupStrategy IN_BACKGROUND
Giám sát và xóa các tài nguyên không sử dụng khỏi luồng mới đang chạy ở chế độ nền.
Đây là cách tiếp cận đáng tin cậy nhất để dọn sạch tài nguyên TensorFlow, với chi phí phải khởi động và chạy một luồng bổ sung dành riêng cho tác vụ này. Mỗi phiên bản EagerSession
có luồng riêng, luồng này chỉ dừng khi phiên đóng.
Chiến lược này được sử dụng theo mặc định.
trận chung kết tĩnh công khai EagerSession.ResourceCleanupStrategy ON_SAFE_POINTS
Giám sát và xóa các tài nguyên không sử dụng khỏi các luồng hiện có, trước hoặc sau khi chúng hoàn thành một tác vụ khác.
Các tài nguyên không sử dụng sẽ được giải phóng khi lệnh gọi đến thư viện TensorFlow đạt đến điểm an toàn để dọn dẹp. Việc này được thực hiện đồng bộ và có thể chặn trong một khoảng thời gian ngắn luồng đã kích hoạt lệnh gọi đó.
Chiến lược này chỉ nên được sử dụng nếu, vì một số lý do, không có luồng bổ sung nào được phân bổ để dọn dẹp. Nếu không, IN_BACKGROUND
nên được ưu tiên.
trận chung kết tĩnh công khai EagerSession.ResourceCleanupStrategy ON_SESSION_CLOSE
Chỉ xóa tài nguyên khi phiên đóng.
Tất cả tài nguyên được phân bổ trong phiên sẽ vẫn còn trong bộ nhớ cho đến khi phiên được đóng rõ ràng (hoặc thông qua kỹ thuật `try-with-resource` truyền thống). Sẽ không có nhiệm vụ bổ sung nào cho việc dọn dẹp tài nguyên.
Chiến lược này có thể dẫn đến lỗi hết bộ nhớ và không nên sử dụng nó, trừ khi phạm vi của phiên bị giới hạn chỉ thực hiện một lượng nhỏ thao tác.