Представление экземпляров GPU: использование глубокого обучения для получения фронтальной визуализации изображений лица
Мы только что выпустили GPU Instances, наши первые серверы, оснащенные графическими процессорами (GPU). Оснащенные высокопроизводительными 16-ГБ картами NVIDIA Tesla P100 и высокоэффективными процессорами Intel Xeon Gold 6148, они идеально подходят для обработки данных, искусственного интеллекта, рендеринга и кодирования видео. В дополнение к выделенному графическому процессору и 10 ядрам Intel Xeon Gold каждый экземпляр поставляется с 45 ГБ памяти, 400 ГБ локального хранилища NVMe SSD и оплачивается 1 евро в час или 500 евро в месяц.
Сегодня мы представляем вам конкретный вариант использования для экземпляров графических процессоров, использующих глубокое обучение для получения фронтальной визуализации изображений лица. Не стесняйтесь попробовать это тоже. Для этого посетите консоль Scaleway, чтобы запросить квоты, прежде чем создавать свой первый экземпляр GPU.
Обзор графического процессора
Графический процессор (GPU) стал условным обозначением специализированной электронной схемы, предназначенной для питания графики на машине, в конце 1990-х годов, когда она была популяризирована производителем чипов NVIDIA.
Первоначально графические процессоры создавались главным образом для обеспечения высокого качества игр, создавая реалистичную цифровую графику. Сегодня эти возможности используются более широко для ускорения вычислительных нагрузок в таких областях, как искусственный интеллект, машинное обучение и сложное моделирование.
Экземпляры с графическим процессором в Scaleway были спроектированы так, чтобы их можно было оптимизировать для сбора огромных пакетов данных и очень быстрого выполнения одной и той же операции снова и снова. Сочетание эффективного процессора с мощным графическим процессором обеспечит наилучшее соотношение производительности системы и цены для ваших приложений глубокого обучения.
Написание собственного программного обеспечения Frontalization для лица с нуля
Сценаристы никогда не перестают нас смешить с причудливыми изображениями технологической индустрии, начиная от лукавого до веселого. Однако с учетом современных достижений в области искусственного интеллекта некоторые из самых нереалистичных технологий с экранов телевизоров оживают.
Например, программное обеспечение Enhance от CSI: NY (или Les Experts: Manhattan для наших франкоязычных читателей) уже вышло за пределы современных нейронных сетей Super Resolution. На более экстремальной стороне воображения находится враг государства:
«Поворот [кадры видеонаблюдения] на 75 градусов вокруг вертикали», должно быть, казался совершенно бессмысленным задолго до 1998 года, когда вышел фильм, о чем свидетельствуют комментарии YouTube под этим конкретным отрывком:
Несмотря на явный пессимизм аудитории, сегодня благодаря машинному обучению любой, кто обладает небольшим знанием Python, достаточно большим набором данных и учетной записью Scaleway, может попробовать написать программу, достойную научной фантастики.
Вступление
Забудьте MNIST, забудьте о классификаторах скучных кошек и собак, сегодня мы узнаем, как сделать что-то гораздо более захватывающее! Эта статья вдохновлена впечатляющей работой R. Huang et al. («За гранью вращения лица: глобальное и локальное восприятие GAN для фотореалистичного синтеза идентичности с сохранением идентичности»), в котором авторы синтезируют фронтальные виды лиц людей с учетом их изображений под разными углами. Ниже приведен рисунок 3 из этой статьи, в котором они сравнивают свои результаты [1] с предыдущей работой [2-6]:
Мы не будем пытаться воспроизвести современную модель R. Huang et al. Вместо этого вы сможете построить и обучить модель лобной фронтализации, дающую разумные результаты за один день:
Дополнительно вы узнаете:
Шаг 1: Запуск и настройка экземпляра Gpu на Scaleway
Если вы еще не получили себе экземпляр GPU, размещенный в Scaleway, вы можете сделать это:
Для этого проекта вы можете выбрать любой из двух доступных в настоящее время образов ОС GPU (10.1 и 9.2 относятся к соответствующим версиям CUDA) и выбрать RENDER-S в качестве сервера.
Нажмите на зеленую кнопку «Создать новый сервер» внизу страницы, и через несколько секунд ваш собственный экземпляр GPU будет запущен!
Теперь вы можете подключиться к нему по ssh, используя IP-адрес, который вы прочитали в своем списке экземпляров на вкладке Compute:
Докерский путь:
Если вы знакомы с Docker, удобной платформой контейнерирования, которая позволяет упаковывать приложения вместе со всеми их зависимостями, продолжайте и извлекайте наш образ Docker, содержащий все пакеты и код, необходимый для проекта Frontalization, а также небольшой примерный набор данных:
(Обратите внимание, что вам нужно использовать nvidia-docker, а не обычную команду docker из-за наличия графического процессора.) Теперь вы находитесь в каталоге Frontalization, содержащем четыре файла Python, содержимое которых мы рассмотрим ниже, и каталог training_set содержащий образец учебного набора данных. Отличное начало, теперь вы можете перейти к шагу 2!
Родной путь:
Если вы не знакомы с Docker, нет проблем, вы можете легко настроить среду вручную. Экземпляры Scaleway GPU поставляются с уже установленными CUDA, Python и conda, но на момент написания этой статьи вам необходимо понизить версию Python до Python 3.6, чтобы библиотека DALI от Nvidia функционировала:
Вы можете загрузить свой собственный тренировочный набор на свой экземпляр GPU через:
и сохраните код Python, который вы увидите ниже, в каталоге Frontalization, используя выбранный вами текстовый редактор терминала (например, nano или vim, оба из которых уже установлены). В качестве альтернативы вы можете клонировать репозиторий Scaleway GitHub для этого проекта.
Шаг 2: Настройка ваших данных
В основе любого проекта машинного обучения лежат данные. К сожалению, Scaleway не может предоставить базу данных CMU Multi-PIE Face, которую мы использовали для обучения из-за авторских прав, поэтому мы продолжим, если у вас уже есть набор данных, на котором вы хотели бы обучить свою модель. Чтобы использовать библиотеку загрузки данных NVIDIA (DALI), изображения должны быть в формате JPEG. Размеры изображений не имеют значения, поскольку у нас есть DALI для изменения размера всех входов до размера, требуемого нашей сетью (128 × 128 пикселей), но для получения наиболее реалистичных синтезированных изображений желательно соотношение 1: 1.,
Преимущество использования DALI перед, например, стандартным набором данных PyTorch, заключается в том, что любая предварительная обработка (изменение размера, обрезка и т. Д.) Выполняется на графическом процессоре, а не на процессоре, после чего предварительно обрабатываются изображения на графическом процессоре. питаются прямо в нейронную сеть.
Управление нашим набором данных:
Для проекта фронтализации лица мы настраиваем наш набор данных следующим образом: папка набора данных содержит подпапку и целевое фронтальное изображение для каждого человека (также как субъект). В принципе, имена подпапок и целевых изображений не обязательно должны быть идентичными (как показано на рисунке ниже), но если мы хотим отдельно отсортировать все подпапки и все цели в алфавитно-цифровом порядке, те, которые соответствуют одному и тому же субъект должен появляться в одной и той же позиции в двух списках имен.
Как видите, подпапка 001 /, соответствующая теме 001, содержит изображения человека, изображенные в 001.jpg — это близко обрезанные изображения лица в разных позах, условиях освещения и различных выражениях лица. Для целей фронтализации лица крайне важно, чтобы фронтальные изображения были выровнены как можно ближе друг к другу, тогда как другие (профильные) изображения имеют немного больше свободы.
Например, все наши целевые фронтальные изображения имеют квадратную форму и обрезаются таким образом, что нижняя часть подбородка человека расположена в нижней части изображения, а центрированная точка между внутренними углами глаз расположена на 0,8 ч выше и 0,5 часа справа от нижнего левого угла (h — высота изображения). Таким образом, после изменения размера изображений до 128 × 128 все элементы лица появляются в более или менее одинаковых местах на изображениях в обучающем наборе, и сеть может научиться генерировать упомянутые элементы и объединять их вместе в реалистичный синтез. лица.
Строительство трубопровода DALI:
Теперь мы собираемся построить конвейер для нашего набора данных, который будет наследоваться от nvidia.dali.pipeline.Pipeline. На момент написания DALI не поддерживает непосредственное чтение пар (изображение, изображение) из каталога, поэтому мы будем использовать nvidia.dali.ops.ExternalSource () для передачи входных данных и целей в конвейер.
data.py
Теперь вы можете использовать класс ImagePipeline, который вы написали выше, для загрузки изображений из вашего каталога наборов данных, по одному пакету за раз.
Если вы используете код из этого учебника в блокноте Jupyter, вот как вы можете использовать ImagePipeline для отображения изображений:
blog.scaleway.com/2019/gpu-instances-using-deep-learning-to-obtain-frontal-rendering-of-facial-images/
Сегодня мы представляем вам конкретный вариант использования для экземпляров графических процессоров, использующих глубокое обучение для получения фронтальной визуализации изображений лица. Не стесняйтесь попробовать это тоже. Для этого посетите консоль Scaleway, чтобы запросить квоты, прежде чем создавать свой первый экземпляр GPU.
Обзор графического процессора
Графический процессор (GPU) стал условным обозначением специализированной электронной схемы, предназначенной для питания графики на машине, в конце 1990-х годов, когда она была популяризирована производителем чипов NVIDIA.
Первоначально графические процессоры создавались главным образом для обеспечения высокого качества игр, создавая реалистичную цифровую графику. Сегодня эти возможности используются более широко для ускорения вычислительных нагрузок в таких областях, как искусственный интеллект, машинное обучение и сложное моделирование.
Экземпляры с графическим процессором в Scaleway были спроектированы так, чтобы их можно было оптимизировать для сбора огромных пакетов данных и очень быстрого выполнения одной и той же операции снова и снова. Сочетание эффективного процессора с мощным графическим процессором обеспечит наилучшее соотношение производительности системы и цены для ваших приложений глубокого обучения.
Написание собственного программного обеспечения Frontalization для лица с нуля
Сценаристы никогда не перестают нас смешить с причудливыми изображениями технологической индустрии, начиная от лукавого до веселого. Однако с учетом современных достижений в области искусственного интеллекта некоторые из самых нереалистичных технологий с экранов телевизоров оживают.
Например, программное обеспечение Enhance от CSI: NY (или Les Experts: Manhattan для наших франкоязычных читателей) уже вышло за пределы современных нейронных сетей Super Resolution. На более экстремальной стороне воображения находится враг государства:
«Поворот [кадры видеонаблюдения] на 75 градусов вокруг вертикали», должно быть, казался совершенно бессмысленным задолго до 1998 года, когда вышел фильм, о чем свидетельствуют комментарии YouTube под этим конкретным отрывком:
Несмотря на явный пессимизм аудитории, сегодня благодаря машинному обучению любой, кто обладает небольшим знанием Python, достаточно большим набором данных и учетной записью Scaleway, может попробовать написать программу, достойную научной фантастики.
Вступление
Забудьте MNIST, забудьте о классификаторах скучных кошек и собак, сегодня мы узнаем, как сделать что-то гораздо более захватывающее! Эта статья вдохновлена впечатляющей работой R. Huang et al. («За гранью вращения лица: глобальное и локальное восприятие GAN для фотореалистичного синтеза идентичности с сохранением идентичности»), в котором авторы синтезируют фронтальные виды лиц людей с учетом их изображений под разными углами. Ниже приведен рисунок 3 из этой статьи, в котором они сравнивают свои результаты [1] с предыдущей работой [2-6]:
Мы не будем пытаться воспроизвести современную модель R. Huang et al. Вместо этого вы сможете построить и обучить модель лобной фронтализации, дающую разумные результаты за один день:
Дополнительно вы узнаете:
- Как использовать библиотеку NVIDIA DALI для высоко оптимизированной предварительной обработки изображений на GPU и подачи их в модель глубокого обучения.
- Как зашифровать генерирующую состязательную сеть, которую в PyTorch назвал «самой интересной идеей за последние десять лет в машинном обучении» Янн ЛеКун, директор Facebook AI.
- У вас также будет своя собственная Генеративная сеть состязаний, настроенная на обучение по выбранному вами набору данных. Без дальнейших церемоний, давайте копаться!
Шаг 1: Запуск и настройка экземпляра Gpu на Scaleway
Если вы еще не получили себе экземпляр GPU, размещенный в Scaleway, вы можете сделать это:
- Войдите в консоль Scaleway.
- Выберите вкладку Compute на левой боковой панели и нажмите зеленую кнопку + Создать сервер.
- Выберите вкладку «GPU OS» в «Выберите образ» и «GPU» в «Выберите сервер».
Для этого проекта вы можете выбрать любой из двух доступных в настоящее время образов ОС GPU (10.1 и 9.2 относятся к соответствующим версиям CUDA) и выбрать RENDER-S в качестве сервера.
Нажмите на зеленую кнопку «Создать новый сервер» внизу страницы, и через несколько секунд ваш собственный экземпляр GPU будет запущен!
Теперь вы можете подключиться к нему по ssh, используя IP-адрес, который вы прочитали в своем списке экземпляров на вкладке Compute:
ssh root@[YOUR GPU INSTANCE IP ADDRESS]
Докерский путь:
Если вы знакомы с Docker, удобной платформой контейнерирования, которая позволяет упаковывать приложения вместе со всеми их зависимостями, продолжайте и извлекайте наш образ Docker, содержащий все пакеты и код, необходимый для проекта Frontalization, а также небольшой примерный набор данных:
nvidia-docker run -it rg.fr-par.scw.cloud/opetrova/frontalization:tutorial
root@b272693df1ca:/Frontalization# ls
Dockerfile data.py main.py network.py test.py training_set
(Обратите внимание, что вам нужно использовать nvidia-docker, а не обычную команду docker из-за наличия графического процессора.) Теперь вы находитесь в каталоге Frontalization, содержащем четыре файла Python, содержимое которых мы рассмотрим ниже, и каталог training_set содержащий образец учебного набора данных. Отличное начало, теперь вы можете перейти к шагу 2!
Родной путь:
Если вы не знакомы с Docker, нет проблем, вы можете легко настроить среду вручную. Экземпляры Scaleway GPU поставляются с уже установленными CUDA, Python и conda, но на момент написания этой статьи вам необходимо понизить версию Python до Python 3.6, чтобы библиотека DALI от Nvidia функционировала:
conda install -y python==3.6.7
conda install -y pytorch torchvision
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist nvidia-dali==0.6.1
Вы можете загрузить свой собственный тренировочный набор на свой экземпляр GPU через:
scp -r path/to/local/training_set root@[YOUR GPU INSTANCE IP ADDRESS]:/root/Frontalization
и сохраните код Python, который вы увидите ниже, в каталоге Frontalization, используя выбранный вами текстовый редактор терминала (например, nano или vim, оба из которых уже установлены). В качестве альтернативы вы можете клонировать репозиторий Scaleway GitHub для этого проекта.
Шаг 2: Настройка ваших данных
В основе любого проекта машинного обучения лежат данные. К сожалению, Scaleway не может предоставить базу данных CMU Multi-PIE Face, которую мы использовали для обучения из-за авторских прав, поэтому мы продолжим, если у вас уже есть набор данных, на котором вы хотели бы обучить свою модель. Чтобы использовать библиотеку загрузки данных NVIDIA (DALI), изображения должны быть в формате JPEG. Размеры изображений не имеют значения, поскольку у нас есть DALI для изменения размера всех входов до размера, требуемого нашей сетью (128 × 128 пикселей), но для получения наиболее реалистичных синтезированных изображений желательно соотношение 1: 1.,
Преимущество использования DALI перед, например, стандартным набором данных PyTorch, заключается в том, что любая предварительная обработка (изменение размера, обрезка и т. Д.) Выполняется на графическом процессоре, а не на процессоре, после чего предварительно обрабатываются изображения на графическом процессоре. питаются прямо в нейронную сеть.
Управление нашим набором данных:
Для проекта фронтализации лица мы настраиваем наш набор данных следующим образом: папка набора данных содержит подпапку и целевое фронтальное изображение для каждого человека (также как субъект). В принципе, имена подпапок и целевых изображений не обязательно должны быть идентичными (как показано на рисунке ниже), но если мы хотим отдельно отсортировать все подпапки и все цели в алфавитно-цифровом порядке, те, которые соответствуют одному и тому же субъект должен появляться в одной и той же позиции в двух списках имен.
Как видите, подпапка 001 /, соответствующая теме 001, содержит изображения человека, изображенные в 001.jpg — это близко обрезанные изображения лица в разных позах, условиях освещения и различных выражениях лица. Для целей фронтализации лица крайне важно, чтобы фронтальные изображения были выровнены как можно ближе друг к другу, тогда как другие (профильные) изображения имеют немного больше свободы.
Например, все наши целевые фронтальные изображения имеют квадратную форму и обрезаются таким образом, что нижняя часть подбородка человека расположена в нижней части изображения, а центрированная точка между внутренними углами глаз расположена на 0,8 ч выше и 0,5 часа справа от нижнего левого угла (h — высота изображения). Таким образом, после изменения размера изображений до 128 × 128 все элементы лица появляются в более или менее одинаковых местах на изображениях в обучающем наборе, и сеть может научиться генерировать упомянутые элементы и объединять их вместе в реалистичный синтез. лица.
Строительство трубопровода DALI:
Теперь мы собираемся построить конвейер для нашего набора данных, который будет наследоваться от nvidia.dali.pipeline.Pipeline. На момент написания DALI не поддерживает непосредственное чтение пар (изображение, изображение) из каталога, поэтому мы будем использовать nvidia.dali.ops.ExternalSource () для передачи входных данных и целей в конвейер.
data.py
import collections
from random import shuffle
import os
from os import listdir
from os.path import join
import numpy as np
from nvidia.dali.pipeline import Pipeline
import nvidia.dali.ops as ops
import nvidia.dali.types as types
def is_jpeg(filename):
return any(filename.endswith(extension) for extension in [".jpg", ".jpeg"])
def get_subdirs(directory):
subdirs = sorted([join(directory,name) for name in sorted(os.listdir(directory)) if os.path.isdir(os.path.join(directory, name))])
return subdirs
flatten = lambda l: [item for sublist in l for item in sublist]
class ExternalInputIterator(object):
def __init__(self, imageset_dir, batch_size, random_shuffle=False):
self.images_dir = imageset_dir
self.batch_size = batch_size
# First, figure out what are the inputs and what are the targets in your directory structure:
# Get a list of filenames for the target (frontal) images
self.frontals = np.array([join(imageset_dir, frontal_file) for frontal_file in sorted(os.listdir(imageset_dir)) if is_jpeg(frontal_file)])
# Get a list of lists of filenames for the input (profile) images for each person
profile_files = [[join(person_dir, profile_file) for profile_file in sorted(os.listdir(person_dir)) if is_jpeg(profile_file)] for person_dir in get_subdirs(imageset_dir)]
# Build a flat list of frontal indices, corresponding to the *flattened* profile_files
# The reason we are doing it this way is that we need to keep track of the multiple inputs corresponding to each target
frontal_ind = []
for ind, profiles in enumerate(profile_files):
frontal_ind += [ind]*len(profiles)
self.frontal_indices = np.array(frontal_ind)
# Now that we have built frontal_indices, we can flatten profile_files
self.profiles = np.array(flatten(profile_files))
# Shuffle the (input, target) pairs if necessary: in practice, it is profiles and frontal_indices that get shuffled
if random_shuffle:
ind = np.array(range(len(self.frontal_indices)))
shuffle(ind)
self.profiles = self.profiles[ind]
self.frontal_indices = self.frontal_indices[ind]
def __iter__(self):
self.i = 0
self.n = len(self.frontal_indices)
return self
# Return a batch of (input, target) pairs
def __next__(self):
profiles = []
frontals = []
for _ in range(self.batch_size):
profile_filename = self.profiles[self.i]
frontal_filename = self.frontals[self.frontal_indices[self.i]]
profile = open(profile_filename, 'rb')
frontal = open(frontal_filename, 'rb')
profiles.append(np.frombuffer(profile.read(), dtype = np.uint8))
frontals.append(np.frombuffer(frontal.read(), dtype = np.uint8))
profile.close()
frontal.close()
self.i = (self.i + 1) % self.n
return (profiles, frontals)
next = __next__
class ImagePipeline(Pipeline):
'''
Constructor arguments:
- imageset_dir: directory containing the dataset
- image_size = 128: length of the square that the images will be resized to
- random_shuffle = False
- batch_size = 64
- num_threads = 2
- device_id = 0
'''
def __init__(self, imageset_dir, image_size=128, random_shuffle=False, batch_size=64, num_threads=2, device_id=0):
super(ImagePipeline, self).__init__(batch_size, num_threads, device_id, seed=12)
eii = ExternalInputIterator(imageset_dir, batch_size, random_shuffle)
self.iterator = iter(eii)
self.num_inputs = len(eii.frontal_indices)
# The source for the inputs and targets
self.input = ops.ExternalSource()
self.target = ops.ExternalSource()
# nvJPEGDecoder below accepts CPU inputs, but returns GPU outputs (hence device = "mixed")
self.decode = ops.nvJPEGDecoder(device = "mixed", output_type = types.RGB)
# The rest of pre-processing is done on the GPU
self.res = ops.Resize(device="gpu", resize_x=image_size, resize_y=image_size)
self.norm = ops.NormalizePermute(device="gpu", output_dtype=types.FLOAT,
mean=[128., 128., 128.], std=[128., 128., 128.],
height=image_size, width=image_size)
# epoch_size = number of (profile, frontal) image pairs in the dataset
def epoch_size(self, name = None):
return self.num_inputs
# Define the flow of the data loading and pre-processing
def define_graph(self):
self.profiles = self.input(name="inputs")
self.frontals = self.target(name="targets")
profile_images = self.decode(self.profiles)
profile_images = self.res(profile_images)
profile_output = self.norm(profile_images)
frontal_images = self.decode(self.frontals)
frontal_images = self.res(frontal_images)
frontal_output = self.norm(frontal_images)
return (profile_output, frontal_output)
def iter_setup(self):
(images, targets) = self.iterator.next()
self.feed_input(self.profiles, images)
self.feed_input(self.frontals, targets)
Теперь вы можете использовать класс ImagePipeline, который вы написали выше, для загрузки изображений из вашего каталога наборов данных, по одному пакету за раз.
Если вы используете код из этого учебника в блокноте Jupyter, вот как вы можете использовать ImagePipeline для отображения изображений:
from __future__ import division
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
%matplotlib inline
def show_images(image_batch, batch_size):
columns = 4
rows = (batch_size + 1) // (columns)
fig = plt.figure(figsize = (32,(32 // columns) * rows))
gs = gridspec.GridSpec(rows, columns)
for j in range(rows*columns):
plt.subplot(gs[j])
plt.axis("off")
plt.imshow(np.transpose(image_batch.at(j), (1,2,0)))
batch_size = 8
pipe = ImagePipeline('my_dataset_directory', image_size=128, batch_size=batch_size)
pipe.build()
profiles, frontals = pipe.run()
# The images returned by ImagePipeline are currently on the GPU
# We need to copy them to the CPU via the asCPU() method in order to display them
show_images(profiles.asCPU(), batch_size=batch_size)
show_images(frontals.asCPU(), batch_size=batch_size)
blog.scaleway.com/2019/gpu-instances-using-deep-learning-to-obtain-frontal-rendering-of-facial-images/
New General Purpose Instances with High-End CPUs
Через несколько дней после наших экземпляров GPU мы выпускаем новую линейку для крупномасштабных рабочих нагрузок: экземпляры общего назначения. Оснащенные до 48 ядрами AMD EPYC, 256 ГБ памяти и реплицированным локальным хранилищем NVMe SSD, они доступны по цене от € 0,078 / час или 39 € / месяц.
Эта новая линейка оснащена высокопроизводительными процессорами AMD EPYC с большим количеством ядер. Это позволяет нам предлагать вам первоклассные экземпляры, разработанные для ваших самых высоких рабочих нагрузок и самых требовательных приложений.
Среди этих экземпляров общего назначения GP1-XL предлагает отличные спецификации: с 48 ядрами AMD EPYC, 256 ГБ памяти, 600 ГБ памяти NVMe и 2 Гбит / с пропускной способности, это самое мощное и современное предложение Scaleway.
Экземпляры общего назначения доступны в Париже (PAR1) и могут быть запущены в несколько кликов с новой консоли Scaleway. Они также будут развернуты в Амстердаме (AMS1) к апрелю.
Простое и прозрачное ценообразование
Цены на экземпляры общего назначения просты и прозрачны. Он включает в себя машину, место для хранения и IPv4:
console.scaleway.com/compute/servers/create
Создать экземпляр общего назначения
Как всегда в Scaleway, месячная ставка основана на почасовой ставке, ограниченной 500 часами. Это означает, что после 500 часов бесперебойного использования цена ресурса замораживается до фиксированной цены до конца месяца. После запуска вашего экземпляра 1 апреля в полночь UTC его цена больше не будет расти с 21 апреля в 21:00.
Предлагаемые функции
Все функции виртуальных облачных экземпляров Scaleway доступны с экземплярами общего назначения непосредственно из консоли:
- Самые распространенные дистрибутивы и приложения могут быть установлены в несколько кликов, и вы можете настроить первую загрузку с помощью cloud-init.
- Сетевые настройки ваших экземпляров можно легко изменить с помощью групп безопасности; Вы можете управлять фильтрами и применять их к одному или нескольким серверам.
- Экземпляры могут быть зарезервированы как образы для создания клонов или для восстановления предыдущей версии, если это необходимо.
- Кроме того, вы можете автоматизировать эти действия с помощью Scaleway API или инструмента командной строки scw.
Будущее x64 предложения
С запуском экземпляров общего назначения экземпляры x64 больше не могут быть созданы из консоли и скоро исчезнут из нашего API. Однако существующие серверы остаются и останутся полностью работоспособными. При следующей полной загрузке (после выключения на консоли) они будут свободно перенесены на новые гипервизоры, оснащенные AMD EPYC, без каких-либо изменений имени или функций.
Посетите новую консоль Scaleway, чтобы протестировать инстансы общего назначения, и если у вас есть какие-либо вопросы, обращайтесь к нам за помощью. Мы ответим вам как можно скорее.
console.scaleway.com/compute
console.scaleway.com/support
GPU instances available at Scaleway
Искусственный интеллект в Scaleway с GPU экземплярами
Дорогой Cloud Rider, Мы только что выпустили наш первый Экземпляры GPU Cloud! Работает на высоком конце посвященный NVIDIA Tesla P100 и сильные Intel Xeon Gold 6148 ядер, они предложены на лучшее соотношение цена-качество: € 1 / час или € 500 / месяц. Предназначено для искусственного интеллекта и визуализации, наши GPU Инстансы поддерживают свои высокие рабочие нагрузки.
www.scaleway.com/gpu-instances/
Dedibox старт-3-S-SSD завершает наш ассортимент Start с выдающимися характеристиками, которые предлагают лучшее соотношение цена-качество.
Характеристики:
- Процессор: Intel 1x C2350
- Оперативная память: 4 Гб DDR3 ECC
- Диск: 256 ГБ SSD
- Полоса пропускания Основные Unmetered: 1 Гбит / с
Pro-6-XS Dedibox является новинкой нашего Pro диапазона, включая RPNv2 сетевой выгоды для выделенных серверов, предлагающих баланс процессора, памяти и памяти для любых рабочих нагрузок.
Характеристики:
- Процессор: 1x Intel Xeon D-1531 — 6С / 12T — 2,2 ГГц
- Оперативная память: 32 ГБ DDR4 ECC
- Диски: 2x 500 Гб SSD
- Пропускная способность: Премиум 300Mbit / s и др RPNv2
www.online.net/en/dedicated-server
Объявления
[ScalewayLive] Из Heroku2Kubernetes & VLC истории успеха
Присоединяйтесь к нам 14 марта в La Maison Париж для нашего следующего Meetup! Жереми Wimsingues, DevOps инженер, представит, как масштабировать вашу команду с CI / CD и Kubernetes. Получить все знать об установке Gitlab, бегуны внутри Kubernetes и CI / CD микро услуг с помощью Helm и Vault для безопасного развертывания!
Кроме того, Жан-Батист Кемпф, президент организации VideoLAN представит историю развития проекта VLC и объяснить, как он стал стандартом на многих платформах.
www.eventbrite.com/e/scalewaylive-from-heroku2kubernetes-vlc-success-story-tickets-56639938581
Это статья время!
В дополнении к нашим еженедельным учебникам мы начали новую серию: «Это статья Time». В этой серии мы представим вам техническую подготовку и подробную информацию о том, как работает облачная инфраструктура. Мы начали эту новую категорию с серией статей, касающихся объектов хранения, начиная с: Хранение объекта — Что это такое?
blog.scaleway.com/2019/object-storage-scaleway-what-is-it/
Учебники
PowerDNS является открытым DNS исходного сервера написан на C ++. Сервер DNS сервер, который содержит базу данных общедоступных IP-адреса и связанные с ними доменными именами. Его цель состоит в том, чтобы решить, или переводить эти общие имена IP-адрес в соответствии с просьбой. PowerDNS работает на большинстве Linux и всех других производных Unix. Программное обеспечение поставляется с веб-интерфейсом PowerDNS-администратора, что упрощает управление вашими DNS-зон.
www.scaleway.com/docs/installing-powerdns-server-on-ubuntu-bionic/
Mattermost является инструментом обмена сообщений с открытым исходным кодом для межкомандной связи, распространяемого по лицензии MIT и доступна как в свободной команде и оплаченный Enterprise Edition. Этот учебник покажет вам, как установить экземпляр Mattermost с внешним интерфейсом прокси-сервером Nginx и базами данных MariaDB.
www.scaleway.com/docs/installing-mattermost-messaging-ubuntu-bionic/
Object Storage - What Is It? (1/3)
С сегодняшнего дня мы публикуем серию статей об объектном хранилище.
В этой серии статей мы начнем с широкого описания технологии хранения объектов, которая в настоящее время используется в Scaleway.
В следующие недели появятся две другие статьи о внутреннем управлении хранилищем объектов и инфраструктурой хранилищ объектов. Оставайтесь в курсе!
Проблемы с традиционным хранением
Предполагая, что вы хотите хранить большое количество статических файлов, таких как видео, фотографии и документы, на локальном NAS. С традиционными технологиями хранения вы столкнетесь со следующими проблемами:
1. Ограниченное дисковое пространство: все диски имеют ограниченное пространство. Как только ваши диски заполнятся, вам нужно добавить новый и перенастроить вашу систему. Вы можете распределить между несколькими дисками на нескольких машинах, но ваши расходы на управление в вашей инфраструктуре возрастают.
2. Аппаратный сбой. Предположим, у вас есть несколько дисков, на которых хранятся ваши данные. Поскольку ваши диски имеют ограниченный срок службы, они будут случайным образом выходить из строя через определенное время. В качестве контрмеры вы можете использовать такие системы, как RAID, чтобы ограничить потерю данных. Однако этот параметр ограничен вашей машиной. Если ваша машина станет недоступной, все данные, расположенные на ней, также будут недоступны. Отключение будет продолжаться до тех пор, пока вы не сможете восстановить эту машину в нужном состоянии.
3. Затраты. Итак, теперь давайте предположим, что у вас есть работающий RAID-массив с реплицированными настройками. При такой конфигурации вы платите как за использованное, так и за неиспользуемое пространство. Кроме того, вам придется потратить значительное количество времени на администрирование, обновление и устранение нарушений безопасности.
4. Проблемы масштабируемости: ваши настройки популярны среди ваших друзей и родственников, и в результате они хотели бы сохранить свои данные в вашем решении. То, что работало для вас в определенный момент, может не сработать, так как ваши требования растут. Технический выбор, который вы сделали для хранения 3 ТБ в неделю, определенно не такой, как если бы вы хотели хранить 3 ТБ в день или час. Значительное увеличение использования может стать реальной проблемой с решениями для хранения данных, а затраты времени и энергии на изменение вашей архитектуры мучительны. Кроме того, IOPS ограничены на носителе. Большие нагрузки операций ввода / вывода могут привести к отказу оборудования, так как компоненты не поспевают за скоростью.
5. Интеграция в ваше приложение. Такие интерфейсы, как файловые системы или промежуточное программное обеспечение хранилища, могут сталкиваться с множеством проблем при работе на большом кластере машин с большим объемом хранимых данных. Такие технологии также могут страдать от снижения производительности при увеличении объема хранимых данных.
Решения для хранения объектов
Традиционные архитектуры становятся менее подходящими для удовлетворения потребностей современных приложений. Хранение объектов в Scaleway предоставляет реальное решение для решения задач современной инфраструктуры.
Масштабируемое хранилище по требованию
Технологии Object Storage предназначены для хранения больших объемов данных (например, сотен петабайт).
Для этого объектное хранилище полагается не на одну машину, а на несколько взаимосвязанных машин. По мере роста спроса на мощность, стандартизированные машины добавляются регулярно.
Встроенная устойчивость
Чтобы обеспечить доступность ваших данных, мы обладаем достаточной квалификацией для обеспечения отказоустойчивости оборудования и безопасности данных.
Мы гарантируем лучшую долговечность ваших данных, сохраняя объекты на нескольких дисках на разных машинах. Это позволяет нам предотвратить потерю данных в случае аппаратных сбоев.
Эти копии распространяются, чтобы мы были лучше доступны. Например, если одна часть вашего файла повреждена или отсутствует, мы можем легко восстановить ее из исправной части кластера.
У нас также есть эффективные процессы вмешательства в отношении физической инфраструктуры, в случае аппаратного сбоя или недоступности. Мы обеспечиваем надежную связь со специальными командами для быстрого решения проблемы.
Кроме того, мы тратим много времени и усилий на наше решение для мониторинга, которое позволяет нам более активно работать над состоянием работоспособности кластера.
Что касается программного обеспечения, мы разработали распределенное и надежное решение, которое гарантирует, что клиент не сможет создать полную недоступность платформы. Действительно, разные промежуточные программы отвечают за аутентификацию каждого из запросов. Каждый из запросов создает связанные подпроцессы (такие как проверка учетных данных или операторы выставления счетов), которые должны поддерживать 100% нагрузки в любой момент времени (для нагрузки, значительно превышающей 100 миллионов запросов в день).
Модель с оплатой за использование
Вам выставлен счет только за то хранилище, которое вы фактически используете. Цена, которую вы платите, может быть легко рассчитана в зависимости от ваших потребностей хранения. Вам не нужно беспокоиться о настройке и настройке (конфигурация RAID, требования к файловой системе).
Избавьтесь от необходимости администрировать свои машины и устранять нарушения безопасности, запуск производства и так далее. Все эти знания и расходы полностью делегируются вашему поставщику.
Стандартный интерфейс
Интерфейс прикладного программирования (API)
Несколько протоколов позволяют взаимодействовать с хранилищем объектов.
Два протокола, которые доминируют на рынке, это S3 и SWIFT.
Мы выбрали протокол S3, потому что он широко интегрирован в сторонние приложения. Кроме того, это позволяет нам занимать стратегическую позицию на этом рынке, сводя к минимуму модификации, необходимые для использования нашего облака.
На практике в конфигурации нужно внести всего несколько изменений, чтобы сэкономить половину затрат на хранение. Обязательно проверьте функции, необходимые для запуска вашего приложения. Большая часть нашей работы заключается в реализации всех функций, предлагаемых конкурентами (AWS S3, облачное хранилище GCP, хранилище BLOB-объектов Azure и т. Д.).
Хранение объекта через S3 — это протокол HTTP, т. Е. Вы можете напрямую взаимодействовать с ним с помощью команды curl, которая возвращает формат XML. Общаться с необработанными HTTP-вызовами может быть очень утомительно, поэтому наши клиенты в основном используют SDK или CLI-клиенты (например, rclone), а также потому, что в них интегрировано множество механизмов, которые упростят вашу жизнь (повтор, синхронизация и другие).
Управление файлами
Хранилище объектов превращает файлы в объекты. Содержимое вашего файла не имеет никакого отношения к тому, как оно хранится. Будь то видео, фотографии, текстовые или двоичные данные, они будут сохранены одинаково.
Данные не размещаются в иерархии каталогов. Они живут в плоском адресном пространстве.
Приложения идентифицируют дискретные объекты данных по их уникальному адресу.
Объекты собраны в ведра, которые представляют пространство, где объекты расположены вместе.
Имя сегмента должно быть уникальным идентификатором, который позволяет нам предоставлять такие функции, как местоположение сегмента или гео-репликация.
В вашем ведре все объекты называются первого уровня. Это одно из самых больших различий по сравнению с традиционными системами, такими как файловая система. Давайте посмотрим на это на примере:
Filesystem V S Object storage
- dir1/ | - dir1/
- file1 | - dir1/file1
- file2 | - dir1/file2
- file3 | - dir1/file3
В этом примере мы видим, что каталог dir1 заменяется префиксом dir1, все объекты (file1, file2 и file3) затем совместно используют префикс dir1, но больше не содержатся в каталоге с именем dir1.
Хранение объектов принципиально отличается от файловой системы в этом отношении.
Такие проекты, как s3fs, существуют, чтобы помочь вам перейти от традиционной файловой системы к объектному хранилищу.
Другое ключевое отличие состоит в том, что вы не можете частично обновить содержимое объекта. Объект является неизменным, и если вы хотите изменить его, весь объект должен быть возвращен.
Это влияет на программное обеспечение, которому необходимо регулярно обновлять файлы, такие как базы данных. В случае базы данных ее основными характеристиками являются мгновенное время доступа и возможность поиска в файле (переход к определенному байту, чтение или частичное манипулирование файлом).
Если ваша файловая система действительно подключена к хранилищу объектов, время доступа увеличится с нескольких наносекунд до нескольких миллисекунд, что значительно замедлит работу вашей базы данных. Кроме того, если вы измените только два байта в файле, который составляет даже несколько МБ, вам придется отправить весь файл обратно по сети, чтобы обновить объект.
Заключение
В следующих статьях мы увидим, как Object Storage работает внутри и как строилась инфраструктура.
Создайте свое первое ведро сейчас!
console.scaleway.com/object-storage/
Friday night
DataCenter Scaleway DC5 (часть 5)
- DataCenter Scaleway DC5 (часть 1)
- DataCenter Scaleway DC5 (часть 2)
- DataCenter Scaleway DC5 (часть 3)
- DataCenter Scaleway DC5 (часть 4)
Это помещение для проведения испытаний компьютерного оборудования в различных погодных ситуациях, искусственно воссозданного с помощью ПЛК, короче говоря, исследований и разработок для доведения оборудования до его пределов.
Читать дальше →
DataCenter Scaleway DC5 (часть 4)
DC5 также является местом, где собираются различные серверные массивы Scaleway, которые отправляются в различные центры обработки данных в Иль-де-Франсе и Амстердаме.
Вот несколько пустых ягод, ожидающих на сайте:
А вот несколько поддонов серверов:
Запас серверов:
Запас мелких компонентов жесткие диски, SSD, SDRAM DDR4, SFP +, XFP, QSFP
Читать дальше →
DataCenter Scaleway DC5 (часть 3)
На этой картинке спереди DC5 есть 3 камеры:
Будущая док-станция для доставки DC5:
Scaleway установил ограничитель потока воды для подключения к канализации: он не может превышать 5 литров в секунду. В случае штормов бассейн служит буфером и временно наполняет, затем вода попадает в канализацию со скоростью 5 литров в секунду. Это позволяет сдерживать воду, возникающую в результате сильных гроз, и не насыщать канализационные канализационные системы.
Scaleway установил сепаратор углеводородов: возможное загрязнение углеводородов также будет отфильтровано и вызовет тревогу в центре наблюдения.
Генераторы расположены в задней части здания, справа на фотографии, в той части здания, которая была снесена и перестроена.
Небольшая комната, расположенная слева от фотографии, является комнатой для перекачки и раздачи мазута. (другой планируется на другой стороне здания)
Большая белая комната перед центром обработки данных и местный насос / обменник для воды со льдом.
На земле бетонный желоб, закрытый металлическими люками, содержит трубы для подачи топлива 26 генераторов (сегодня установлено только два, а третий поставляется).
Установка очень проста: в каждой комнате есть два выделенных трансформатора на 20 000 Вольт на 1250 кВА, два выделенных генератора на 1315 кВт / 1650 кВА, два выделенных TGBT, четыре выделенных инвертора на 500 кВА, 16 выделенных аккумуляторных отводов
Это группа питания низкого напряжения (400 вольт).Это то же самое, что и Scaleway DC3 работает в течение многих лет и прошел сертификацию институт Tier3 безотказной работу, требующее производство генераторов (не чрезвычайную ситуацию ) может работать без прерывания обслуживания при полной нагрузке и до бесконечности.
DC5 особенность: они могут синхронизировать с сетью Enedis.
Это дает много преимуществ:
- Можно сделать нагрузочное тестирование без прекращения электропитания (зная, что маршрут не спасен, это может повредить разрез для тестовой группы): Генератор подает электросеть без отключить ENEDIS.
- Зимой можно стирать потребление центра обработки данных. В периоды пикового спроса в зимний период, RTE может сделать большой чек клиентов, которые в состоянии очистить их потребление (некоторые промышленные потребители электроэнергии, такие как литейном прекратить к нему DC5 просто вопрос запуска генераторов размера, чтобы работать в непрерывном производстве)
После отключения питания, центр обработки данных не сразу вернуться к сети с временем отсечки коромысла: Блоки питания обеспечивает стабильность, а затем синхронизировать с сетью. После правильной синхронизации, нагрузка передается к сети ENEDIS ИБП и генераторы остановки. (Таким образом, один разрез вместо двух, что представляет большой интерес, так как маршрут не волнистый)
Читать дальше →
DataCenter Scaleway DC5 (часть 2)
DC5 имеет запас 234 000 литров воды для осмоса, разделенный на два подземных резервуара по 117 кубических метров (117 000 литров). Это дает не менее 10 часов автономии (экстремальный случай с наружной температурой 40 градусов Цельсия и 12 серверными комнатами при полной нагрузке).
Зачем хранить столько воды обратного осмоса? Справиться с разрывом воды или обратным осмосом.
ПЛК предназначен для хранения воды для осмоса и распределения воды в адиабатических средах.
ПЛК позволяет устанавливать пороги предупреждения (слишком полный, низкий уровень тревоги), а также порог, при котором контроллер запускает осмос для заполнения резервуара и тот, где он останавливает обратный осмос.
Со временем будет построено 12 компьютерных залов, все идентичные.
Установленная средняя электрическая мощность составляет 6 кВт на отсек, так что это очень высокая плотность.
Комната состоит из 4 рядов отсеков, расположенных вплотную: два горячих прохода и три холодных прохода.
С фото легче показать: ряды отсеков не закончены, но есть два горячих прохода, временно разделенных для ввода в эксплуатацию, в то время как остальная часть комнаты представляет собой холодные проходы (мы находимся в системе сдерживание горячего воздуха)
Вот угол комнаты, готовой к приему первых компьютерных отсеков, присутствует только рама вокруг будущей двери горячего прохода. Серверы не подключены к сети, они просто предназначены для загрузки и тестирования различных сценариев Scaleway, чтобы узнать среди прочего: потеря сектора ENEDIS, восстановление на генераторах, потеря инвертора, потеря ПЛК GE и т.д…
Свежий воздух подается через решетки с обеих сторон светильника для центрального холодного прохода:
Для холодных проходов, расположенных по бокам комнаты, присутствует только одна серия решеток для подачи свежего воздуха:
Металлическая труба, видимая на предыдущем рисунке, несет воздух, но воздух под высоким давлением, для пневматических инструментов техников.
Вот один из воздухозаборников для пневматического инструмента:
Читать дальше →