Сообщения

Что такое SLA

Изображение
SLA — это аббревиатура от английского термина Service Level Agreement, что переводится как соглашение об уровне обслуживания. Это документ или договор между поставщиком услуг и клиентом, который определяет качество предоставляемых услуг, параметры работы, ожидания сторон и обязательства поставщика перед клиентом. Основные компоненты SLA: Описание услуги . Определяются конкретные услуги, которые предоставляются согласно соглашению. Уровень сервиса : Время доступности . Сколько времени услуга должна быть доступна клиенту, например, 99% в течение месяца. Скорость реакции . Как быстро поставщик должен реагировать на запросы клиента. Метрики производительности . Показатели, такие как скорость обработки запросов, время отклика системы и другие. Обязательства поставщика . Четко прописываются обязанности поставщика, включая поддержку, мониторинг, устранение неисправностей и обновления. Штрафные санкции . Если поставщик нарушает условия соглашения, клиент имеет право требовать компе...

Что такое SFT в машинном обучении

Изображение
SFT (Supervised Fine-Tuning), или контролируемая тонкая настройка, — это метод, используемый в машинном обучении, в частности, для тонкой настройки больших языковых моделей (LLM). Этот подход фокусируется на настройке параметров модели с использованием набора данных помеченных примеров, что позволяет модели изучать определенные поведения или стили на основе высококачественных выходных данных. Основные особенности контролируемой тонкой настройки (SFT) Требования к набору данных . SFT включает в себя курирование набора данных, который содержит примеры желаемого вывода модели. Этот набор данных помечен, что означает, что он включает как входные данные, так и соответствующие правильные выходные данные, которые направляют модель во время обучения. Процесс тонкой настройки . Во время SFT обучение модели нацелено на прогнозирование следующего токена, аналогично ее фазе предварительного обучения. Однако, в то время как предварительное обучение использует широкий набор текста, SFT используе...

Что такое PEFT в машинном обучении

Изображение
PEFT , или Parameter-Efficient Fine-Tuning, — это метод машинного обучения, особенно в контексте больших языковых моделей (LLM), разработанный для оптимизации процесса тонкой настройки путем настройки только небольшого подмножества параметров при сохранении большинства параметров модели замороженными. Такой подход значительно снижает вычислительные затраты и требования к ресурсам по сравнению с традиционными методами тонкой настройки. Ключевые особенности PEFT Эффективность - PEFT позволяет выполнять тонкую настройку больших моделей без необходимости повторного обучения всех параметров. Сосредоточившись на ограниченном количестве обучаемых параметров, он минимизирует как время, так и вычислительные ресурсы, необходимые для обучения. Сохранение знаний - одним из главных преимуществ PEFT является его способность предотвращать катастрофическое забывание, когда модель теряет ранее изученную информацию при тонкой настройке на новые задачи. Замораживая большинство параметров, PEFT сохра...

Что такое BERT в машинном обучении

Изображение
BERT (Bidirectional Encoder Representations from Transformers) — это языковая модель, разработанная Google в 2018 году. Она стала краеугольным камнем в области обработки естественного языка (NLP) благодаря своей способности понимать контекст и связи между словами в тексте. Преимущества BERT Двунаправленный контекст . В отличие от традиционных моделей, которые читают текст либо слева направо, либо справа налево, BERT обрабатывает текст в обоих направлениях одновременно. Этот двунаправленный подход позволяет ему улавливать более глубокие контекстные значения, что делает его более эффективным для понимания языковых нюансов. Архитектура Transformer . BERT использует кодирующую часть архитектуры Transformer, которая известна своим механизмом внутреннего внимания. Этот механизм помогает модели изучать контекстные связи между словами, улучшая ее понимание структуры языка. Модель языка с маской (MLM) . Во время обучения BERT использует технику, называемую моделированием языка с маской, в ...

Различия между процессами и потоками в Linux

Изображение
Понимание различий между процессами и потоками имеет решающее значение для эффективного программирования и управления ресурсами в Linux. Определение Процесс - это независимая единица выполнения, которая содержит собственное пространство памяти и системные ресурсы. Это самодостаточная среда, которая может выполнять программы. Поток - это облегченная единица выполнения в процессе. Потоки совместно используют одно и то же пространство памяти и ресурсы своего родительского процесса, что обеспечивает более эффективную связь и совместное использование данных. Управление памятью Каждый процесс имеет свое собственное отдельное пространство памяти, которое включает сегменты кода, данных и стека. Такая изоляция гарантирует, что процессы не будут мешать друг другу. Потоки совместно используют пространство памяти родительского процесса. Они имеют собственный стек, но совместно используют сегменты данных, что делает межпотоковое взаимодействие более быстрым и простым по сравнению с межпроце...

Сравнение JAX, TensorFlow и PyTorch для задач машинного обучения

Изображение
JAX , TensorFlow и PyTorch — три известных фреймворка в области машинного обучения, каждый из которых обладает уникальными функциями и преимуществами. В этой статье мы сравним их. Основные функции JAX Автоматическое дифференцирование . JAX преуспевает в автоматическом дифференцировании, позволяя пользователям легко вычислять производные функций. Это особенно полезно для обучения нейронных сетей без ручного кодирования вычислений производных. Функциональное программирование . JAX использует функциональную модель программирования, которая позволяет выполнять компонуемые преобразования функций, что упрощает оценку содержания кода. Оптимизация производительности . JAX использует компиляцию Just-In-Time (JIT) через компилятор XLA, который оптимизирует выполнение кода для различных аппаратных ускорителей, таких как GPU и TPU, что часто приводит к значительному повышению производительности. TensorFlow Экосистема и сообщество . TensorFlow имеет обширную экосистему с обширными библиоте...

Что такое JAX в машинном обучении

Изображение
JAX — это высокопроизводительная библиотека числовых вычислений, разработанная Google, специально для исследований машинного обучения (ML) и численных вычислений. Она объединяет несколько мощных функций, которые делают ее особенно подходящей для приложений машинного обучения. Основные особенности JAX Автоматическое дифференцирование . JAX включает модифицированную версию Autograd, позволяющую автоматически дифференцировать функции Python. Это необходимо для оптимизации моделей машинного обучения с помощью таких методов, как обратное распространение. Компиляция Just-In-Time (JIT) . JAX использует JIT-компиляцию через компилятор XLA (Accelerated Linear Algebra), который оптимизирует выполнение числовых вычислений. Эта функция позволяет JAX компилировать функции Python в высокоэффективный код, который может работать на различных аппаратных ускорителях, таких как GPU и TPU. Привычный API . JAX предоставляет интерфейс, похожий на NumPy, что упрощает переход пользователей, знакомых с Nu...

Модель управления памятью Арена

Изображение
Арена — это модель управления памятью, которая используется в ядре операционной системы Linux для управления виртуальной памятью. Основная идея модели заключается в том, чтобы уменьшить количество страниц памяти, которые необходимо переключать при каждом переключении контекста между процессами. Это достигается путем объединения всех страниц одного процесса в одну область памяти. Когда процесс активен, все его страницы находятся в этой области, и когда он завершает работу, все его страницы освобождаются одновременно. Основные преимущества этой модели: Увеличение производительности: уменьшение количества операций переключения страниц приводит к увеличению общей производительности системы. Уменьшение фрагментации: объединение всех страниц одного процесса в одной области уменьшает степень фрагментации физической памяти. Простая реализация: модель достаточно проста в реализации и требует минимальных изменений в архитектуре ядра. Несмотря на эти преимущества, модель имеет некоторые н...

Многоколоночные индексы в PostgreSQL

Изображение
Индекс может быть определен более чем для одного столбца таблицы. Например, если у вас есть таблица такого вида: CREATE TABLE devtable ( major int, minor int, name varchar ); (скажем, вы храните свой каталог /dev в базе данных...) и часто выдаете такие запросы, как: SELECT name FROM devtable WHERE major = constant AND minor = constant; тогда может быть уместно определить индекс для major и minor столбцов вместе, например: CREATE INDEX devtable_mm_idx ON devtable (major, minor); В настоящее время только типы индексов B-tree, GiST, GIN и BRIN поддерживают индексы с несколькими ключевыми столбцами. Может ли быть несколько ключевых столбцов, не зависит от того, можно ли добавить столбцы INCLUDE в индекс. Индексы могут иметь до 32 столбцов, включая столбцы INCLUDE. Многостолбцовый индекс B-tree можно использовать с условиями запроса, включающими любое подмножество столбцов индекса, но индекс наиболее эффективен, когда существуют ограничения на ведущие (крайние ле...

Типы индексов в PostgreSQL

Изображение
PostgreSQL предоставляет несколько типов индексов: B-tree, Hash, GiST, SP-GiST, GIN и BRIN. Каждый тип индекса использует свой алгоритм, который лучше всего подходит для разных типов запросов. По умолчанию команда CREATE INDEX создает индексы B-tree, которые подходят для наиболее распространенных ситуаций. Другие типы индексов выбираются путем написания ключевого слова USING, за которым следует имя типа индекса. Например, чтобы создать хэш-индекс: CREATE INDEX name ON table USING HASH (column); B-Tree (B-дерево) B-деревья могут обрабатывать запросы на равенство и диапазон для данных, которые можно отсортировать в некотором порядке. В частности, планировщик запросов PostgreSQL рассмотрит возможность использования индекса B-дерева всякий раз, когда индексированный столбец участвует в сравнении с использованием одного из следующих операторов: < <= = >= > Конструкции, эквивалентные комбинациям этих операторов, такие как BETWEEN и IN, также могут быть реа...

SQL в PostgreSQL: оконные функции

Изображение
Оконная функция выполняет вычисление по набору строк таблицы, которые каким-то образом связаны с текущей строкой. Это сравнимо с типом расчета, который можно выполнить с помощью агрегатной функции. Однако оконные функции не заставляют строки группироваться в одну выходную строку, как это было бы при не оконных агрегатных вызовах. Вместо этого строки сохраняют свои отдельные идентификаторы. За кулисами оконная функция может получить доступ не только к текущей строке результата запроса. Вот пример, который показывает, как сравнить зарплату каждого сотрудника со средней зарплатой в его или ее отделе: SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary; depname | empno | salary | avg -----------+-------+--------+----------------------- develop | 11 | 5200 | 5020.0000000000000000 develop | 7 | 4200 | 5020.0000000000000000 develop | 9 | 4500 | 5020.0000000000000000 develop | 8 | 6000...

SQL в PostgreSQL: транзакции

Изображение
Транзакции - фундаментальная концепция всех систем баз данных. Существенным моментом транзакции является то, что она объединяет несколько шагов в одну операцию по принципу "все или ничего". Промежуточные состояния между шагами не видны другим параллельным транзакциям, и если произойдет какой-либо сбой, который препятствует завершению транзакции, то ни один из шагов не повлияет на базу данных вообще. Например, рассмотрим банковскую базу данных, которая содержит остатки по различным счетам клиентов, а также общие остатки по депозитам для филиалов. Предположим, мы хотим записать платеж в размере 100 долларов США со счета Алисы на счет Боба. Предельно упрощая, команды SQL для этого могут выглядеть так: UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; UPDATE branches SET balance = balance - 100.00 WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Alice'); UPDATE accounts SET balance = balance + 100.00 WHERE name = ...

SQL в PostgreSQL: внешние ключи (Foreign Keys)

Изображение
По данным предыдущих постов . Рассмотрим следующую проблему: вы хотите убедиться, что никто не может вставлять строки в таблицу weather, для которых нет соответствующей записи в таблице cities. Это называется поддержанием ссылочной целостности ваших данных. В упрощенных системах баз данных это может быть реализовано (если вообще возможно), сначала просмотрев таблицу cities, чтобы проверить, существует ли соответствующая запись, а затем вставить или отклонить новые записи weather. Этот подход имеет ряд проблем и очень неудобен, поэтому PostgreSQL может сделать это за вас. Новое объявление таблиц будет выглядеть так: CREATE TABLE cities ( name varchar(80) primary key, location point ); CREATE TABLE weather ( city varchar(80) references cities(name), temp_lo int, temp_hi int, prcp real, date date ); Теперь попробуйте вставить недопустимую запись: INSERT INTO weather VALUES ('Berkeley', 45, ...

SQL в PostgreSQL: представления (Views)

Изображение
По данным предыдущих постов . Предположим, комбинированный список записей погоды и местоположения города представляет особый интерес для вашего приложения, но вы не хотите вводить запрос каждый раз, когда он вам нужен. Вы можете создать представление по запросу, которое дает имя запросу, на которое вы можете ссылаться как на обычную таблицу: CREATE VIEW myview AS SELECT name, temp_lo, temp_hi, prcp, date, location FROM weather, cities WHERE city = name; SELECT * FROM myview; Широкое использование представлений - ключевой аспект хорошего дизайна базы данных SQL. Представления позволяют вам инкапсулировать детали структуры ваших таблиц, которые могут меняться по мере развития вашего приложения, за согласованными интерфейсами. Представления можно использовать практически в любом месте, где можно использовать настоящую таблицу. Построение представлений на другие представления не редкость. Читайте также: SQL в PostgreSQL: концепции и создание таблиц SQ...

SQL в PostgreSQL: объединение таблиц (JOIN)

Изображение
До сих пор наши запросы обращались только к одной таблице за раз. Запросы могут обращаться к нескольким таблицам одновременно или к одной и той же таблице таким образом, что одновременно обрабатываются несколько строк таблицы. Запросы, которые обращаются к нескольким таблицам (или нескольким экземплярам одной и той же таблицы) одновременно, называются join запросами. Они объединяют строки из одной таблицы со строками из второй таблицы с выражением, определяющим, какие строки должны быть объединены в пары. Например, чтобы вернуть все записи weather вместе с местоположением связанного города, базе данных необходимо сравнить столбец city в каждой строке таблицы weather со столбцом name всех строк в таблице cities и выбрать пары строки, в которых совпадают эти значения. Это можно сделать с помощью следующего запроса: SELECT * FROM weather JOIN cities ON city = name; city | temp_lo | temp_hi | prcp | date | name | location ---------------+---------+------...

SQL в PostgreSQL: запрос к таблице

Изображение
Для получения данных из таблицы выполняется запрос к таблице. Для этого используется оператор SQL SELECT. Оператор разделен на список выбора (часть, в которой перечислены столбцы, которые должны быть возвращены), список таблиц (часть, в которой перечислены таблицы, из которых следует извлекать данные) и необязательную квалификацию (часть, которая определяет любые ограничения) . Например, чтобы получить все строки таблицы weather, введите: SELECT * FROM weather; Здесь * сокращенное обозначение "все столбцы". Таким образом, такой же результат будет с: SELECT city, temp_lo, temp_hi, prcp, date FROM weather; Результат должен быть (по данным, добавленным в предыдущем посте ): city | temp_lo | temp_hi | prcp | date ---------------+---------+---------+------+------------ San Francisco | 46 | 50 | 0.25 | 1994-11-27 San Francisco | 43 | 57 | 0 | 1994-11-29 Hayward | 37 | 54 | | 1994-11-29 (3 rows) Хотя S...

SQL в PostgreSQL: заполнение таблицы строками

Изображение
Оператор INSERT используется для заполнения таблицы строками: INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); Обратите внимание, что все типы данных используют довольно очевидные форматы ввода. Константы, которые не являются простыми числовыми значениями, обычно должны быть заключены в одинарные кавычки ('), как в примере. Тип даты на самом деле довольно гибкий в том, что он принимает. Тип point требует ввода пары координат, как показано здесь: INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)'); Синтаксис, который использовался до сих пор, требует, чтобы вы запомнили порядок столбцов. Альтернативный синтаксис позволяет явно перечислить столбцы: INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29'); Вы можете перечислить столбцы в другом порядке, если хотите, или даже опустить некоторые столбцы, например, если количеств...

SQL в PostgreSQL: концепции и создание таблиц

Изображение
Концепции PostgreSQL - это система управления реляционными базами данных (СУБД). Это означает, что это система для управления данными, хранящимися в отношениях. Отношение - это, по сути, математический термин для обозначения таблицы. Идея хранения данных в таблицах сегодня настолько распространена, что может показаться очевидной по своей сути, но существует ряд других способов организации баз данных. Файлы и каталоги в Unix-подобных операционных системах образуют пример иерархической базы данных. Более современная разработка - объектно-ориентированная база данных. Каждая таблица представляет собой именованный набор строк. Каждая строка данной таблицы имеет одинаковый набор именованных столбцов, и каждый столбец имеет определенный тип данных. В то время как столбцы имеют фиксированный порядок в каждой строке, важно помнить, что SQL никоим образом не гарантирует порядок строк в таблице (хотя они могут быть явно отсортированы для отображения). Таблицы сгруппированы в базы данных, а наб...

Доступ к базе данных PostgreSQL

Изображение
После того, как вы создали базу данных , вы можете получить к ней доступ: Запуск интерактивной программы терминала PostgreSQL, называемой psql, которая позволяет интерактивно вводить, редактировать и выполнять команды SQL. Использование существующего графического инструмента внешнего интерфейса, такого как pgAdmin, или офисного пакета с поддержкой ODBC или JDBC для создания и управления базой данных. Написание собственного приложения с использованием одной из нескольких доступных языковых привязок. Возможно, вы захотите запустить psql, чтобы попробовать примеры из этого поста. Его можно активировать для базы данных mydb, набрав команду: $ psql mydb Если вы не укажете имя базы данных, по умолчанию будет использоваться имя вашей учетной записи . В psql вас встретит следующее сообщение: psql (14.0) Type "help" for help. mydb=> Последняя строка также может быть: mydb=# Это будет означать, что вы являетесь суперпользователем базы данных, что, скорее...

Создание базы данных PostgreSQL

Изображение
Первый тест, чтобы увидеть, можете ли вы получить доступ к серверу базы данных, - это попытаться создать базу данных. Работающий сервер PostgreSQL может управлять множеством баз данных. Обычно для каждого проекта или для каждого пользователя используется отдельная база данных. Чтобы создать новую базу данных, в этом примере с именем mydb, вы используете следующую команду: $ createdb mydb Если это не дает ответа, значит, этот шаг был успешным, и вы можете использовать созданную базу данных. Если вы видите сообщение, подобное: createdb: command not found значит PostgreSQL не был установлен должным образом. Либо он не был установлен вообще, либо путь поиска вашей оболочки не был настроен для его включения. Попробуйте вместо этого вызвать команду с абсолютным путем: $ /usr/local/pgsql/bin/createdb mydb Путь в вашем случае может быть другим. Обратитесь к администратору или ознакомьтесь с инструкциями по установке, чтобы исправить ситуацию. Другой ответ может быть так...