Tôi chạy bản demo MNIST trong TensorFlow với 2 lớp đối tượng và một lớp toàn conect, tôi nhận được một thông báo 'chạy ra khỏi memeory cố gắng phân bổ 2.59GiB' , nhưng nó cho thấy rằng tổng bộ nhớ là 4.69GiB, và bộ nhớ tự do là 3.22GiB, làm thế nào nó có thể dừng lại với 2.59GiB? Và với mạng lớn hơn, làm thế nào tôi có thể quản lý bộ nhớ gpu? Tôi chỉ quan tâm đến cách sử dụng tốt nhất bộ nhớ gpu và muốn biết nó xảy ra như thế nào, không phải cách phân bổ trước bộ nhớLàm thế nào tôi có thể giải quyết 'hết bộ nhớ gpu' trong TensorFlow
Trả lời
Nó không phải là về điều đó. trước hết, bạn có thể thấy dung lượng bộ nhớ khi nó chạy bằng cách theo dõi gpu của bạn. ví dụ nếu bạn có một gpu nvidia u có thể kiểm tra với lệnh watch -n 1 nvidia-smi
. Nhưng trong hầu hết các trường hợp nếu bạn không thiết lập phần bộ nhớ gpu tối đa, nó phân bổ gần như toàn bộ bộ nhớ miễn phí. vấn đề của bạn là thiếu bộ nhớ đủ cho gpu của bạn. mạng cnn hoàn toàn nặng. Khi bạn đang cố gắng để nuôi mạng của bạn KHÔNG làm điều đó với toàn bộ dữ liệu của bạn. Làm thủ tục cho ăn này với kích thước lô thấp.
Tôi có một mạng khá lớn (CNN + LSTM). Dữ liệu đầu vào của tôi có kích thước, batch_size = 5, (5x396x396) - đó là khối lượng 3D. Vì vậy, một kích thước lô khá nhỏ. Tôi đang chạy trên một GTX 1070 với 8GB RAM, nhưng tôi vẫn còn hết bộ nhớ. Có cách nào bạn biết không? Bất kỳ hướng dẫn nào phác thảo cách giải quyết? –
Nó có thể không chỉ vì kích thước lô. Bạn có đang sử dụng bất kỳ hàng đợi nào để tạo các lô nhập liệu (như 'tf.train.shuffle_batch') không? Nếu vậy hãy kiểm tra dung lượng của hàng đợi. – Nandeesh
Tôi đã gặp phải lỗi bộ nhớ khi đào tạo CNN nhỏ trên GTX 970. Thông qua phần nào đó, tôi phát hiện ra rằng hãy cho TensorFlow phân bổ bộ nhớ trên GPU khi cần (thay vì lên phía trước) đã giải quyết tất cả vấn đề của tôi . Điều này có thể được thực hiện bằng cách sử dụng mã Python sau:
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config = config)
Trước đây, TensorFlow sẽ phân bổ trước ~ 90% bộ nhớ GPU. Tuy nhiên, đối với một số lý do không rõ, điều này sau này sẽ dẫn đến lỗi bộ nhớ khi tôi tăng kích thước của mạng. Bằng cách sử dụng mã trên, tôi không còn lỗi OOM nữa.
Tính năng này hoạt động trên tập lệnh của tôi mặc dù tôi đang sử dụng keras – Hong
Theo mặc định, TensorFlow ánh xạ gần như tất cả bộ nhớ GPU của tất cả các GPU (tùy thuộc vào CUDA_VISIBLE_DEVICES) hiển thị cho quá trình. Điều này được thực hiện để sử dụng hiệu quả hơn các tài nguyên bộ nhớ GPU tương đối quý giá trên các thiết bị bằng cách giảm phân mảnh bộ nhớ.
TensorFlow cung cấp hai tùy chọn Config trên Phiên để kiểm soát điều này.
Đầu tiên là tùy chọn allow_growth, mà cố gắng để phân bổ chỉ càng nhiều bộ nhớ GPU dựa trên phân bổ thời gian chạy:
config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config, ...)
Phương pháp thứ hai là lựa chọn per_process_gpu_memory_fraction, mà quyết định cho phần của mức lượng tổng thể bộ nhớ mà mỗi GPU hiển thị sẽ được phân bổ. Ví dụ, bạn có thể nói TensorFlow chỉ phân bổ 40% tổng số bộ nhớ của mỗi GPU bởi:
config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.4 session = tf.Session(config=config, ...)
- 1. Làm thế nào để ngăn chặn lưu lượng tensorflow phân bổ toàn bộ bộ nhớ GPU?
- 2. TensorFlow: Làm thế nào để đo lường bao nhiêu bộ nhớ GPU mỗi tensor mất?
- 3. TensorFlow: cách đăng nhập sử dụng bộ nhớ GPU (VRAM)?
- 4. Có cách nào để xác định bộ nhớ GPU đang được sử dụng bởi TensorFlow không?
- 5. Làm thế nào để kiểm soát bộ nhớ trong khi sử dụng Keras với backend tensorflow?
- 6. Cách tôi có thể giải quyết Chấm dứt do Lỗi Bộ nhớ
- 7. Làm thế nào tôi có thể giải phóng bộ nhớ một cách rõ ràng bằng Python?
- 8. Split RNN Mức tiêu thụ bộ nhớ Đồng đều giữa các GPU trong TensorFlow
- 9. Giải quyết ngầm ẩn bộ nhớ
- 10. Android: Làm thế nào tôi có thể giải quyết cho những hình ảnh trong GridView?
- 11. Làm thế nào tôi có thể giải quyết đa thức bậc năm trong C++
- 12. Làm thế nào tôi có thể giải quyết hệ phương trình tuyến tính trong SymPy?
- 13. Làm thế nào để giải quyết rò rỉ bộ nhớ swing nghe?
- 14. Làm cách nào để tính toán bộ nhớ GPU cần thiết để chạy mô hình trong TensorFlow?
- 15. Làm thế nào tôi có thể kiểm tra một bộ điều khiển với các thuộc tính giải quyết trong AngularJS?
- 16. Mathematica hết bộ nhớ
- 17. ios: làm thế nào để giải quyết cảnh báo rò rỉ bộ nhớ này
- 18. Làm thế nào để giải phóng bộ nhớ trong PHP?
- 19. Làm thế nào tôi có thể giải quyết một hiệp hội đa hình ba chiều?
- 20. Tôi có thể giải phóng bộ nhớ cho SysAllocString không?
- 21. Làm thế nào tôi có thể chặn cho đến khi Dojo Trì hoãn được giải quyết?
- 22. GPU - Ánh xạ bộ nhớ hệ thống
- 23. Làm cách nào để giảm mức tiêu thụ bộ nhớ trong một vòng lặp trong TensorFlow?
- 24. Làm thế nào tôi có thể giải quyết đồng hồ trôi cho Máy ảo của mình?
- 25. Làm thế nào tôi có thể giải quyết các lỗi dòng này trên MySQL Workbench?
- 26. C# Làm thế nào tôi có thể giải quyết các giới hạn khi sử dụng DirectoryInfo?
- 27. Có thể đặt trước bộ nhớ gây ra ngoại lệ Hết bộ nhớ
- 28. Làm thế nào để giải quyết Microsoft.VisualStudio.ExtensionManager.MissingReferencesException
- 29. Lưu lượng Tensor: Đã hết bộ nhớ cố gắng phân bổ
- 30. Làm thế nào để giải quyết lỗi này VFY: không thể giải quyết phương pháp ảo
có thể trùng lặp của [Làm thế nào để ngăn chặn tensorflow từ phân bổ tổng thể của một bộ nhớ GPU?] (Http: //stackoverflow.com/questions/34199233/how-to-prevent-tensorflow-from-allocating-the-totality-of-a-gpu-memory) –
Tôi đã thấy nó trước đây, nhưng nó đề cập đến việc cấp phát bộ nhớ gpu, không thiếu bộ nhớ – Fangxin