Использовал гугл колаб для обучения нейросети. Периодически вводил капчи, чтобы не выключилось обучение. Высветилось сообщение- нельзя использовать GPU Google. В итоге на 2,5 часа работы насмарку. Подскажите, как на моем локальном компе запустить обучение на GPU.
С линуксом возиться не хочется.
Отслеживать
задан 25 янв 2022 в 13:06
lerm_on_t_off lerm_on_t_off
133 9 9 бронзовых знаков
А у вас видюха Nvidia , мощная? Иначе нет смысла на GPU учить ) Линукс не нужен, ставите Anaconda , например, ну и что там ещё поверх неё — tensorflow , keras , драйвера CUDA не забыть. И учите что хотите.
25 янв 2022 в 14:43
Видюха Радеон RX580. Требуется именно последовательность действий как для чайника. И что значит- нет смысла учить?
25 янв 2022 в 18:07
То и значит, что от хилой видюхи с небольшой памятью толку будет не больше, чем при обучении на процессоре. С радеоном всё плохо было несколько я помню, но может что и поменялось. Обычно все библиотеки для обучения на GPU поддерживают только CUDA
Как установить Stable Diffusion в Google Colab
25 янв 2022 в 19:24
Хотя нет, вру. Если памяти хватает, то почти любая видюха будет быстрее, чем CPU. Но с радеоном придётся повозиться и вряд ли что получится на винде.
25 янв 2022 в 19:32
С радеоном и нвидией не прошло- у одной нет куды, другая слишком простая, чтобы поддерживать её. Пробовали сделать так research.google.com/colaboratory/intl/ru/local-runtimes.html. Но выдаёт ошибку на стадии шаг 3. ImportError: DLL load failed while importing error: Не найден указанный модуль. Не сталкивались с таким?
26 янв 2022 в 17:05
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно поставить плед, который позволил мне даже на старой AMD карте обучать https://github.com/plaidml/plaidml А далее в коде типа такого:
import os os.environ[«KERAS_BACKEND»] = «plaidml.keras.backend» from keras.datasets import fashion_mnist from keras.models import Sequential, Model from keras.layers import Input, Concatenate, Dense, BatchNormalization, Convolution1D, Convolution2D, MaxPooling1D, MaxPooling2D, RepeatVector, Dense, Dropout, Activation, Flatten, LeakyReLU, Conv1D, LSTM, Conv2D, MaxPooling2D, ConvLSTM2D from keras import utils from keras.callbacks import ModelCheckpoint, ReduceLROnPlateau, CSVLogger from keras import regularizers from keras.models import save_model, load_model, model_from_json
Источник: ru.stackoverflow.com
Как создать нейросеть с помощью chatGPT
Эти нейросети (РЕАЛЬНО) лучше ChatGPT 🤯
ChatGPT – прекрасное средство для создания и обучения нейронных сетей, подготовки датасетов и проведения экспериментов.
erid: LjN8KXX2o
ООО «ИТ Медиа»
Многие слышали о нашумевшей нейронной сети chatGPT от OpenAI, которая способна решать множество текстовых задач: отвечать на вопросы, генерировать идеи и т. д. ChatGPT успешно используется для программирования, так как умеет писать код, находить ошибки в коде, комментировать код и многое другое. Логично, что мы, как Университет искусственного интеллекта, специализируемся на искусственном интеллекте и, естественно, решили попробовать использовать chatGPT для генерации и обучения нейронных сетей и проведения экспериментов.
У нас это получилось: chatGPT не только применима, но и значительно упрощает работу по генерации архитектуры нейронных сетей и проведению экспериментов. Ниже приводен пример решения задачи классификации водителей на внимательных, засыпающих, отвлекающихся на телефон и т. п. — классификация изображений на 10 классов.
Типовая задача, решать ее мы будем комплексно, начиная с подготовки датасета, который необходим для обучения нейронных сетей. В нашем случае это zip-архив, который надо скачать, подготовить, превратить в обучающие выборки, нормировать и преобразовать перед тем, как подать в нейронную сеть. Часто это гораздо больший рутинный труд для разработчика, чем само обучение нейронной сети.
Мы сделаем и то, и другое исключительно с помощью запросов к chatGPT — вся статья представляет собой только запросы в chatGPT, без единой строчки рукописного кода – это был важный критерий. Приводим успешные запросы и пару ошибок для примера. При работе с chatGPT важно уметь правильно задать системе запрос.
Она умная и отлично понимает даже сложные комплексные запросы, но иногда человек формулирует запрос так, что системе он не понятен. Поэтому важный скил программирования с помощью chatGPT – промт-инжиниринг, умение правильно поставить задачу.
Вообще работа с chatGPT похожа на работу с очень умным junior’ом, который знает всё, что только можно знать в Интернете, но некоторые задачи понимает не так, как нужно. И, повторяю, результат зависит от умения правильно поставить ему задачу. Важный момент: мы будем обсуждать машинное обучение, создание нейронных сетей, поэтому аудитория может разделиться на две части.
Первая – те, кто разбирается в машинном обучении и в библиотеке Keras. Для них будут интересны и сами запросы к chatGPT, которые мы сформулировали, и код, который она создает. Вторая часть аудитории – это разработчики, которые не разбираются в машинном обучении и Keras.
Скорее всего, им будет не совсем понятно, что происходит (что такое слои, что такое эпохи, что такое батчи), но будет интересен сам формат запросов к chatGPT и то, как мы их формулируем. Возможно, в дальнейшем вы захотите либо изучать машинное обучение, либо программировать с помощью chatGPT, и тогда вам будет полезно посмотреть, какие бывают запросы, как мы их переструктурируем в случае ошибки, даже если вы не до конца будете понимать код созданной нейронной сети на Keras. Рассказываем, как устроены наши данные и как их нужно подготовить для подачи в сеть.
Запрос № 1 к chatGPT:
Напиши подготовку тренировочных данных для нейронной сети по классификации изображений, для чего напиши код скачивания датасета при помощи gdown по этой ссылке и код разархивации датасета из zip-формата в директорию ‘content/cars’. Датасет не поделен на train и test.
Он состоит из 10 папок (название каждой соответствует названию категории), каждый файл необходимо открыть при помощи Image.open, не используй генератор. Добавь в код масштабирование данных и приведи y_train к формату one hot encoding. Используй LabelEncoder для кодирования строковых меток в целые числа. Определи список названий классов и количество классов. Создай простую keras-модель на получившихся данных. Ответ chatGPT: import os import gdown import zipfile from PIL import Image from sklearn.preprocessing import LabelEncoder from sklearn.utils import shuffle from sklearn.model_selection import train_test_split import numpy as np from keras.utils import to_categorical from keras.models import Sequential from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D # Скачиваем датасет url = ‘ https://storage.yandexcloud.net/aiueducation/marketing/datasets/reality.zip gdown.download(url, ‘reality.zip’, quiet= False ) # Распаковываем набор данных with zipfile.ZipFile( «reality.zip»,»r» ) as zip_ref: zip_ref.extractall( «content/cars» ) # Загружаем изображения и ярлыки X = [] y = [] classes = os.listdir( «content/cars» ) for i, class_name in enumerate ( classes ): for image_name in os.listdir( «content/cars/» + class_name): image = Image. open ( «content/cars/» + class_name + «/» + image_name) image = image.resize(( 64, 64 )) X.append(np.array(image)) y.append(class_name) # Масштабируем данные X = np.array(X) / 255.0 # Кодируем ярлыки label_encoder = LabelEncoder() y = label_encoder.fit_transform(y) # Приводим ярлыки к формату One-hot encoding num_classes = len(np.unique(y)) y = to_categorical(y, num_classes) # Перемешиваем данные X, y = shuffle(X, y) # Делим набор данных на тренировочную и тестовую выборки X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Создаем простую модель keras model = Sequential() model.add(Conv2D( 32 , ( 3, 3 ), activation= ‘relu’ , input_shape=( 64, 64, 3 ))) model.add(MaxPooling2D(( 2, 2 ))) model.add(Flatten()) model.add(Dense(num_classes, activation= ‘softmax’ )) model. compile (optimizer= ‘adam’ , loss= ‘categorical_crossentropy’ ,
metrics=[ ‘accuracy’ ])
Запрос № 2 к chatGPT:
Теперь напиши, как дополнить этот код, чтобы запустить обучение модели на 10 эпохах, построй график точности по эпохам. Ответ chatGPT: import matplotlib.pyplot as plt # Обучаем модель history = model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test)) # Рисуем график точности по эпохам обучения plt.plot(history.history[ ‘accuracy’ ]) plt.plot(history.history[ ‘val_accuracy’ ]) plt.title( ‘Model accuracy’ ) plt.ylabel( ‘Accuracy’ ) plt.xlabel( ‘Epoch’ ) plt.legend([ ‘Train’ , ‘Test’ ], loc= ‘upper left’ ) plt.show()
Текстовый комментарий chatGPT: «Добавив этот код, мы запускаем обучение модели на 10 эпохах. Мы сохраняем результат обучения в переменной history, чтобы построить график точности модели по эпохам. Мы используем plt.plot() для отображения истории обучения из history.history[‘accuracy’] (точность на обучающем наборе) и history.history[‘val_accuracy’] (точность на тестовом наборе). И далее добавляем легенду и отображаем график».
Запрос № 3 к сhatGPT:
Это слишком простая модель. Создай более мощную модель, код запуска обучения, график точности, проверь в цикле различные batch_size (32, 64, 128). Ответ chatGPT: from keras.layers import Dropout, BatchNormalization # Создаем более мощную модель model = Sequential() model.add(Conv2D(32, (3, 3), activation= ‘relu’ , input_shape=( 64, 64, 3 ))) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Conv2D( 64 , ( 3, 3 ), activation= ‘relu’ )) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Conv2D( 128 , ( 3, 3 ), activation= ‘relu’ )) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Flatten()) model.add(Dropout( 0.5 )) model.add(Dense(num_classes, activation= ‘softmax ‘ )) model. compile (optimizer= ‘adam’ , loss= ‘categorical_crossentropy’ ,
metrics=[ ‘accuracy’ ]) batch_sizes = [ 32, 64, 128 ] for batch_size in batch_sizes: # Обучаем модель history = model.fit(X_train, y_train, epochs=10, batch_size=batch_size,
validation_data=(X_test, y_test)) # Рисуем график точности по эпохам обучения plt.plot(history.history[ ‘accuracy’ ]) plt.plot(history.history[ ‘val_accuracy’ ]) plt.title( f ‘Model accuracy with batch size ‘) plt.ylabel( ‘Accuracy’ ) plt.xlabel( ‘Epoch’ ) plt.legend([ ‘Train’ , ‘Test’ ], loc= ‘upper left’ ) plt.show()


Получилось не совсем то, что мы хотели: код, созданный chatGPT, не проверяет точность при разных batch_size, а дообучает модель на их разных размерах. Необходимо было более точно составить запрос.
Запрос № 4 к chatGPT:
Сделай код запуска этой модели в цикле с разными размерами batch_size (32, 64, 128), выведи график точности по каждому запуску. Ответ chatGPT: batch_size_list = [ 32, 64, 128 ] for batch_size in batch_size_list: # Создаем более мощную модель model = Sequential() model.add(Conv2D( 32 , ( 3, 3 ), activation= ‘relu’ , input_shape=( 64, 64, 3 ))) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Conv2D(64, ( 3, 3 ), activation= ‘relu’ )) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Conv2D( 128 , ( 3, 3 ), activation= ‘relu’ )) model.add(BatchNormalization()) model.add(MaxPooling2D(( 2, 2 ))) model.add(Flatten()) model.add(Dropout( 0.5 )) model.add(Dense(num_classes, activation= ‘softmax’ )) model. compile (optimizer=’adam’, loss= ‘categorical_crossentropy’ , metrics=[ ‘accuracy’ ]) # Обучаем модель history = model.fit(X_train, y_train, epochs=10, batch_size=batch_size,
validation_data=(X_test, y_test))
# Рисуем график точности по эпохам обучения plt.plot(history.history[‘accuracy’], label= f ‘batch size : ‘ ) plt.title( ‘Model accuracy with different batch sizes’ ) plt.ylabel( ‘Accuracy’ ) plt.xlabel( ‘Epoch’ ) plt.legend(loc= ‘upper left’ ) plt.show()


Таким образом, мы получили (хоть и не с первого раза) то, что хотели (почти). Стоило добавить, что графики нужно было отрисовывать по точности на проверочной выборке.
Запрос № 5 к chatGPT:
- Использование более мощной модели: использование большего количества сверточных слоев, нейронов и слоев связи.
- Использование более большого датасета: использование большего количества данных для обучения модели может увеличить точность.
- Дополнительная аугментация данных: использование аугментации данных, такой как повороты, масштабирование и другие, может помочь модели обобщаться на новые данные.
- Использование сверточных сетей, предварительно обученных (Transfer Learning): использование предварительно обученных сверточных сетей может существенно увеличить точность модели.
- Использование другой оптимизации и другой функции потерь для обучения модели: использование более эффективных алгоритмов оптимизации, таких как Adam, RMSprop или Adagrad и использование более подходящей функции потерь для задачи классификации, такой как categorical_crossentropy или sparse_categorical_crossentropy, может помочь улучшить точность модели.
- Использование регуляризации: использование регуляризации, такой как L1 и L2, может помочь предотвратить переобучение модели.
- Использование стандартизации данных: использование стандартизации данных может помочь сделать данные более однородными и улучшить точность модели.
Запрос № 6
Сделай в цикле проверку точности последней модели с разными оптимизаторами и выведи график сравнения полученных точностей.
Ответ chatGPT:
from keras import optimizers
optimizer_list = [ ‘adam’, ‘sgd’, ‘rmsprop’, ‘adagrad’ ]
for optimizer in optimizer_list:
Источник: www.it-world.ru
Запускаем нейросеть на домашнем компьютере
Сегодня у нас нестандартный проект: будем устанавливать и запускать настоящую нейросеть у себя на компьютере.
Мы пока не будем подробно разбирать тонкости работы алгоритмов и писать нейронку с нуля. Вместо этого мы используем уже готовые скрипты и алгоритмы и попробуем повторить это в домашних условиях. Вам достаточно использовать команды в той же последовательности, и вы получите тот же результат.
И ещё: нейросети — это на самом деле скучно, медленно и не очень эффектно в настройке. Мы привыкли сразу видеть классный и красивый результат, а то, что было до этого, нам обычно не показывают. Эта статья работает наоборот: долго показывает весь процесс, а финальный результат получается за пару секунд.
В этом суть нейросетей: долгая и кропотливая работа ради эффектной концовки.