Google Colaboratory: оманлива інформація про свій графічний процесор (лише 5% оперативної пам’яті доступна для деяких користувачів)


111

оновлення: це питання пов'язане з "Налаштування ноутбука: Прискорювач обладнання: GPU" Google Colab. Це запитання було написане ще до того, як було додано варіант "ТПУ".

Читаючи декілька схвильованих оголошень про Google Colaboratory, що надають безкоштовний графічний процесор Tesla K80, я спробував провести на ньому fast.ai урок, щоб він ніколи не завершився - швидко не вистачає пам'яті. Я почав розслідувати, чому.

Суть полягає в тому, що "безкоштовний Tesla K80" не є "безкоштовним" для всіх - для деяких лише невеликий його фрагмент є "безкоштовним".

Я підключаюсь до Google Colab із Західного узбережжя Канади, і я отримую лише 0,5 ГБ того, що повинно бути 24 ГБ оперативної пам'яті GPU. Інші користувачі отримують доступ до 11 ГБ оперативної пам’яті GPU.

Очевидно, що 0,5 ГБ оперативної пам’яті GPU недостатньо для більшості робіт з ML / DL.

Якщо ви не впевнені, що отримаєте, ось невелику функцію налагодження я скребив разом (працює лише з налаштуваннями графічного процесора ноутбука):

# memory footprint support libraries/code
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install gputil
!pip install psutil
!pip install humanize
import psutil
import humanize
import os
import GPUtil as GPU
GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn’t guaranteed
gpu = GPUs[0]
def printm():
 process = psutil.Process(os.getpid())
 print("Gen RAM Free: " + humanize.naturalsize( psutil.virtual_memory().available ), " | Proc size: " + humanize.naturalsize( process.memory_info().rss))
 print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
printm()

Виконання його в зошиті з юпітером перед запуском будь-якого іншого коду дає мені:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB

Щасливі користувачі, які отримають доступ до повної картки, побачать:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util  0% | Total 11439MB

Ви бачите якісь недоліки в моєму обчисленні наявності оперативної пам’яті GPU, запозиченої у GPUtil?

Чи можете ви підтвердити, що ви отримуєте подібні результати, якщо ви запускаєте цей код у ноутбуці Google Colab?

Якщо мої підрахунки є правильними, чи є можливість отримати більше тієї оперативної пам’яті GPU у вільній коробці?

оновлення: я не впевнений, чому деякі з нас отримують 1/20 того, що отримують інші користувачі. наприклад, людина, яка допомогла мені налагодити це з Індії, і він отримує все це!

Примітка . Будь ласка, не надсилайте більше пропозицій щодо вбивства потенційно застряглих / втеклих / паралельних ноутбуків, які можуть зайняти частину графічного процесора. Незалежно від того, як ви його нарізаєте, якщо ви знаходитесь в тому ж човні, що і я, і я мав би запустити код налагодження, ви побачите, що ви все одно отримуєте загальну суму 5% оперативної пам'яті GPU (станом на це оновлення досі).


Будь-яке рішення цього? чому я отримую різні результати при виконанні! cat / proc /
meminfo

Так, така ж проблема, лише близько 500 мб оперативної пам’яті GPU ... оманливий опис :(
Naveen

2
Спробуйте інструменти з відкритим кодом даних із відкритим кодом (cognitiveclass.ai), оскільки вони також мають безкоштовний графічний процесор із ноутбуками юпітера.
AQ

Я повернув це питання до стану, в якому насправді є питання . Якщо ви провели більше досліджень і знайшли відповідь, відповідне місце для цього знаходиться у полі відповідей. Невірно оновлювати питання рішенням.
Кріс Хейс

@ChrisHayes, я розумію ваш намір, але це невірно, оскільки ваш відкат видалив цілу купу релевантних подробиць, яких зараз немає. Якщо ви хочете запропонувати краще формулювання, яке краще відповідає правилам цієї спільноти, будь ласка, зробіть це, але в іншому випадку, будь ласка, відновіть відкат. Дякую. ps Я вже поставив відповідь .
стасон

Відповіді:


42

Отже, щоб запобігти черговому десятку відповідей, які вказують на недійсні в контексті цього потоку пропозиції! Kill -9 -1, давайте закриємо цю тему:

Відповідь проста:

На цей час Google просто дає лише 5% GPU деяким з нас, тоді як 100% іншим. Період.

оновлення грудня-2019: Проблема все ще існує - оновлення цього питання продовжується.

оновлення березня 2019 року: Через рік працівник Google @AmiF прокоментував стан речей, заявивши, що проблеми не існує, і будь-хто, хто, схоже, має цю проблему, повинен просто скинути час виконання, щоб відновити пам'ять. Тим не менш, оновлення продовжуються, що, як на мене, це говорить про те, що проблема все ще існує, незважаючи на пропозицію @ AmiF протилежного.

оновлення за грудень 2018 року: я маю теорію про те, що Google може мати чорний список певних облікових записів або, можливо, відбитки пальців браузера, коли його роботи виявляють нестандартну поведінку. Це може бути повним збігом обставин, але я досить довгий час виникла проблема з Google Re-captcha на будь-якому веб-сайті, який трапився до цього, де мені довелося переглядати десятки головоломок, перш ніж мене дозволити. зайнявши у мене 10+ хв. Це тривало багато місяців. Раптом станом на цей місяць я не отримую загадок, і будь-яка повторна команда google вирішується лише одним клацанням миші, як це було майже рік тому.

І чому я розповідаю цю історію? Ну, тому що в той же час мені дали 100% оперативної пам’яті GPU на Colab . Ось чому я підозрюю, що якщо ви перебуваєте в теоретичному чорному списку Google, то вам не довіряють, щоб вам дали багато ресурсів безкоштовно. Цікаво, чи знайде хтось із вас однаковий зв’язок між обмеженим доступом до GPU та кошмаром Re-captcha. Як я вже казав, це може бути і зовсім збігом обставин.


4
Ваше твердження про "На сьогоднішній день Google просто дає лише 5% GPU деяким з нас, тоді як 100% для інших. Період". невірно - Колаб ніколи так не працював. Усі діагностовані випадки, коли користувачі бачать менше, ніж повний комплект доступної їм оперативної пам’яті GPU, перейшли до іншого процесу (розпочатого тим самим користувачем, можливо, в іншому ноутбуці), використовуючи решту оперативної пам’яті GPU.
Амі Ф

11
Майбутні читачі: якщо ви вважаєте, що ви бачите цей чи подібні симптоми недоступності оперативної пам’яті GPU, «Скидання всіх режимів виконання» в меню «Runtime» ви отримаєте свіжий VM, який гарантує, що затримки процесів все ще не затримуються на GPU RAM. Якщо ви все ж побачите цей симптом відразу після використання цього меню, подайте помилку на адресу github.com/googlecolab/colabtools/isissue
Ami F

Ваша реальність явно відрізняється від реальності багатьох інших, які продовжують голосувати за цю посаду через рік після її створення. Дуже ймовірно, що деякі користувачі дійсно стикаються з тим, що ви описали, але це стосується не всіх. Тож я не впевнений, як тут допомагає ваша заява. Крім того, коли хтось задав це точне запитання в репортажі, який ви рекомендували, він отримав відповідь BS і його квиток було закрито: github.com/googlecolab/colabtools/isissue/52
stason

2
У випадку, якщо це було незрозуміло: я не описую те, що, на мою думку, реалізація базується на спостереженні за поведінкою системи як користувача. Я описую, якою безпосередньо знаю реалізацію. Я розміщував сподівання, що користувачі, які бачать менше повноцінної доступності, повідомляють про це як про проблему (або помилку користувача, або системну помилку) замість того, щоб читати неправильні твердження вище та припускати, що все працює за призначенням.
Амі Ф

1
Ні, GPU ніколи не ділилися, і у прикладі, який ви пов’язали, немає неправди (просто здогадка та пояснення найпоширенішої причини поширеного симптому).
Амі Ф

22

Минулої ночі я запустив ваш фрагмент і отримав саме те, що ви отримали:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB

але сьогодні:

Gen RAM Free: 12.2 GB  I Proc size: 131.5 MB
GPU RAM Free: 11439MB | Used: 0MB | Util   0% | Total 11439MB

Я думаю, що найбільш вірогідною причиною є те, що графічні процесори поділяються між віртуальними відеосигналами, тому кожен раз, коли ви перезапускаєте час виконання, у вас є шанс переключити GPU, а також існує ймовірність переходу на той, який використовують інші користувачі.

ОНОВЛЕНО: Виявляється, я можу нормально використовувати GPU, навіть коли GPU RAM Free становить 504 Мб, що я вважав причиною ResourceExhaustedError, який я отримав минулої ночі.


1
Я думаю, що я повторно підключився, ймовірно, 50 разів протягом декількох днів, і я завжди отримував ті ж 95% використання, щоб почати. Лише одного разу я побачив 0%. У всіх цих спробах я виймав куду від помилки пам'яті, коли вона наближалася до 100%.
стасон

Що ви маєте на увазі під час свого оновлення? Ви все ще можете працювати з 500Mb? У мене така ж проблема, я отримуюRuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generated/../THCTensorMathCompare.cuh:84
ivan_bilan

6

Якщо ви будете виконувати клітинку, яка щойно містить
! Kill -9 -1
, це призведе до того, що всі стани виконання програми (включаючи пам'ять, файлову систему та GPU) будуть очищені та перезапущені. Зачекайте 30-60-х років і натисніть кнопку З'єднати вгорі праворуч, щоб знову підключитися.


2
дякую, але ваша пропозиція нічого не змінює. Я все ще отримую 5% оперативної пам'яті GPU.
стасон

Це не допомагає. Після вбивства та повторного підключення пам'ять GPU все ще знаходиться на 500 Мбіт із ~ 12 ГБ.
ivan_bilan

4

Оманливий опис з боку Google. Я теж занадто схвильований цим, мабуть. Налаштуйте все, завантажте дані, і тепер я нічого не можу з цим зробити, оскільки у моєму ноутбуці було виділено лише 500 Мб пам'яті.


2

Знайдіть під Python3 і вбийте його. Будь ласка, дивіться зображення нижчевведіть тут опис зображення

Примітка: вбийте лише python3 (pid = 130), а не jupyter python (122).


чи допоможе це у питанні пам’яті? ти не вбиваєш тоді всіх інших людей?
ivan_bilan

це не допомагає, виникла GPU RAM Free: 564MB
така

2

Перезапустіть ядро ​​Jupyter IPython:

!pkill -9 -f ipykernel_launcher

1
близько, але сигари немає:GPU RAM Free: 564MB
ivan_bilan

як більш простий метод перезавантаження ядра, ви можете просто натиснути Runtime | Перезапустіть час виконання ... або ярликCMD/CTRL+M
Agile Bean

2

Я не впевнений, чи справжній цей чорний список! Цілком можливо, що сердечники поділяються між користувачами. Я також пройшов тест, і мої результати такі:

Gen RAM безкоштовно: 12,9 ГБ | Розмір програми: 142,8 МБ ОЗУ GPU безкоштовно: 11441 МБ | Використовується: 0 Мб | Утиль 0% | Всього 11441MB

Здається, я отримую також повне ядро. Однак я пробіг її кілька разів, і я отримав такий же результат. Можливо, я повторю цю перевірку кілька разів протягом дня, щоб побачити, чи є якісь зміни.


2

просто дайте важке завдання гугл колабу, він попросить нас змінити до 25 ГБ барана.

введіть тут опис зображення

Наприклад, запустіть цей код двічі:

import numpy as np
from keras.layers import Conv2D, MaxPooling2D, AveragePooling2D
from keras.layers import Dropout, Flatten, Dense
from keras.models import Sequential
from keras.layers.advanced_activations import LeakyReLU
from keras.datasets import cifar10
(train_features, train_labels), (test_features, test_labels) = cifar10.load_data()
model = Sequential()

model.add(Conv2D(filters=16, kernel_size=(2, 2), padding="same", activation="relu", input_shape=(train_features.shape[1:])))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Conv2D(filters=32, kernel_size=(3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Conv2D(filters=64, kernel_size=(4, 4), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Flatten())

model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(25600, activation="relu"))
model.add(Dense(10, activation="softmax"))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(train_features, train_labels, validation_split=0.2, epochs=10, batch_size=128, verbose=1)

потім натисніть, щоб отримати більше оперативної пам’яті :) введіть тут опис зображення введіть тут опис зображення

введіть тут опис зображення


Я можу це підтвердити. У мене було 15 гіга наборів зображень здебільшого HD (мій диск має 30 гігів замість 15 г), і я застосував свій код, щоб змінити розмір набору зображень до 224 244,3, і я перейшов на високий час роботи оперативної пам'яті. Потім, коли я почав тренувати оперативну пам'ять, піднявся до 31,88 гіга.
Аншуман Кумар,

Але я хотів би додати, що коли я закінчив цю роботу, я не мав доступу до іншого GPU / TPU протягом останніх 24 годин. Можливо, я потрапив у чорний список.
Аншуман Кумар,

@AnshumanKumar, дайте високе навантаження на початку лише в іншому випадку при зміні конфігурації ви втратите раніше виконану роботу, яка знаходиться в таран. Я не використовував високу конфігурацію протягом 24 годин, тому не знаю про чорний список.
Джайніл Патель

Так, це сталося зі мною. Однак робота була зроблена.
Аншуман Кумар

1

Я вірю, якщо у нас відкрито кілька зошитів. Просто закриття його фактично не зупиняє процес. Я не зрозумів, як це зупинити. Але я використав топ, щоб знайти PID python3, який працював найдовше і використовував більшу частину пам'яті, і я вбив його. Зараз все нормально.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.