ฉันมี GPU เพียงตัวเดียว (Titan X Pascal, 12 GB VRAM) และฉันต้องการฝึกหลายรุ่นพร้อมกันบน GPU ตัวเดียวกัน
ฉันพยายามห่อหุ้มโมเดลของฉันในโปรแกรมหลามตัวเดียว (เรียกว่า model.py) และฉันรวมโค้ดใน model.py เพื่อจำกัดการใช้งาน VRAM (ตาม ตัวอย่างนี้) ฉันสามารถเรียกใช้ model.py ได้สูงสุด 3 อินสแตนซ์พร้อมกันบน GPU ของฉัน (โดยแต่ละอินสแตนซ์ใช้ VRAM ของฉันน้อยกว่า 33% เล็กน้อย) น่าแปลกที่เมื่อฉันลองกับ 4 รุ่น ฉันได้รับข้อผิดพลาด:
2017-09-10 13:27:43.714908: E tensorflow/stream_executor/cuda/cuda_dnn.cc:371] coul
d not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2017-09-10 13:27:43.714973: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] coul
d not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
2017-09-10 13:27:43.714988: F tensorflow/core/kernels/conv_ops.cc:672] Check failed
: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNon
fusedAlgo<T>(), &algorithms)
Aborted (core dumped)
ต่อมาฉันสังเกตเห็น บน tensorflow Github ว่าผู้คนคิดว่าไม่ปลอดภัยที่จะมีมากกว่านี้ มีกระบวนการเทนเซอร์โฟลว์มากกว่าหนึ่งกระบวนการที่ทำงานต่อ GPU นี่เป็นเรื่องจริงหรือไม่ และมีคำอธิบายว่าทำไมถึงเป็นเช่นนั้น? เหตุใดฉันจึงสามารถมีกระบวนการเทนเซอร์โฟลว์ 3 กระบวนการที่ทำงานบน GPU เดียวกันและไม่ใช่ 4 กระบวนการ
gpu_options.allow_growth=True
เพื่อป้องกันไม่ให้ TF จัดสรร RAM ส่วนใหญ่ของ GPU ของคุณตามค่าเริ่มต้นเมื่อคุณสร้างเซสชัน - person GPhilo   schedule 11.09.2017