2016-03-31 52 views
6

Tôi hiện đang triển khai YOLO trong TensorFlow và tôi hơi ngạc nhiên về lượng bộ nhớ đang dùng. Trên GPU của tôi tôi có thể đào tạo YOLO bằng cách sử dụng khung Darknet của họ với kích thước lô 64. Trên TensorFlow tôi chỉ có thể thực hiện với kích thước lô 6, với 8 Tôi đã hết bộ nhớ. Đối với giai đoạn thử nghiệm, tôi có thể chạy với kích thước lô 64 mà không cần hết bộ nhớ.TensorFlow: Làm thế nào để đo lường bao nhiêu bộ nhớ GPU mỗi tensor mất?

  1. Tôi tự hỏi làm thế nào tôi có thể tính toán lượng bộ nhớ đang được tiêu thụ bởi mỗi tensor như thế nào? Có phải tất cả các tensors được lưu mặc định trong GPU không? Tôi có thể tính toán tổng mức tiêu thụ bộ nhớ như hình dạng * 32 bit không?

  2. Tôi nhận thấy rằng vì tôi đang sử dụng động lượng, tất cả các tensors của tôi cũng có một dây dẫn /Momentum. Có thể đó cũng đang sử dụng rất nhiều bộ nhớ?

  3. Tôi đang tăng thêm số liệu của mình bằng phương pháp distorted_inputs, rất giống với phương pháp được xác định trong CIFAR-10 tutorial. Nó có thể được rằng phần này là chiếm một phần lớn của bộ nhớ? Tôi tin rằng Darknet thực hiện những thay đổi trong CPU.

Trả lời

6

Bây giờ 1258 đã bị đóng, bạn có thể kích hoạt bộ nhớ đăng nhập bằng Python bằng cách thiết lập một biến môi trường trước khi nhập TensorFlow:

import os 
os.environ['TF_CPP_MIN_VLOG_LEVEL']='3' 
import tensorflow as tf 

Sẽ có một nhiều khai thác gỗ như là kết quả của việc này. Bạn sẽ muốn grep kết quả để tìm các dòng thích hợp. Ví dụ:

grep MemoryLogTensorAllocation train.log 
+0

Điều này phải là * chấp nhận * câu trả lời bây giờ – Wontonimo

+0

cũng điều này là trong python, nhưng làm thế nào tôi có thể ngăn chặn tất cả đăng nhập trong cpp tensorflow –

0

Xem mô tả trong số này (commit). Việc cấp phát bộ nhớ là thông tin thô ở đó mặc dù nó cần một tập lệnh để thu thập thông tin dưới dạng dễ đọc.

+0

Cảm ơn bạn đã trả lời nhanh. Tôi là một chút bối rối như thế nào để thiết lập VLOG bằng cách sử dụng python? Bạn có thể giúp? Cảm ơn! – Clash

+0

'MemoryLogTensorOutput' là gì? – Clash

7

Xin lỗi vì trả lời chậm. Rất tiếc, hiện tại cách duy nhất để đặt cấp nhật ký là chỉnh sửa tensorflow/core/platform/logging.h và biên dịch lại với ví dụ:

#define VLOG_IS_ON(lvl) ((lvl) <= 1) 

Có lỗi đang mở 1258 để kiểm soát quá trình ghi nhật ký một cách trang nhã hơn.

MemoryLogTensorOutput mục nhập được ghi vào cuối mỗi lần thực thi Op và cho biết các tensors chứa đầu ra của Op. Sẽ rất hữu ích khi biết các tensors này kể từ khi bộ nhớ không được giải phóng cho đến khi Op hạ lưu tiêu thụ các tensors, có thể sau này sẽ được đưa ra trong một đồ thị lớn.

Các vấn đề liên quan