Расширенные возможности ИИ с Gemma 4 и AlloyDB Omni for Regulated Industries

1. Обзор

В регулируемых и критически важных отраслях организации сталкиваются с парадоксом: как внедрить передовой ИИ для оптимизации производства, если правила кибербезопасности запрещают передавать данные через общедоступный интернет? Интранет и общедоступный интернет строго разделены и никогда не соприкасаются. Современному производству крайне необходим ИИ для прогнозирования, чтобы предотвращать катастрофические сбои оборудования и оптимизировать производительность. Однако отправка конфиденциальных журналов телеметрии, запатентованных рецептов сплавов или данных ERP в общедоступные Cloud APIs на практике невозможна. Если данные нельзя перенести в облако, облако должно прийти к данным.

В этой практической работе мы перенесем самые продвинутые инструменты Google Cloud для работы с данными и ИИ в изолированные среды с высоким уровнем безопасности, используя Gemma 4 и AlloyDB Omni.

AlloyDB Omni: надежное хранилище данных

Представьте, что AlloyDB Omni – это высокопроизводительное хранилище. Это контейнеризированная база данных корпоративного уровня, которую вы скачиваете и запускаете в своей защищенной интрасети.

  • Простая интеграция. Он подключается напрямую к производственным датчикам (например, VIM или тяжелому прессу) и локальным ERP (например, Oracle R12).
  • Хранилище, готовое к работе с ИИ. В нем безопасно хранятся сверхсекретные технологические карты, в которых используются векторные встраивания для ИИ-поиска (pgvector).
  • Производительность. AlloyDB значительно превосходит стандартную PostgreSQL как при высоких транзакционных нагрузках, так и при аналитической ИИ-обработке.

Локальные ИИ-эксперты: Gemma, TimesFM, TabFM

Вместо удаленных API вы можете скачать модели с открытыми весами и запустить их на своем устройстве без утечки данных.

  • Gemma LLM от Google с открытыми весами, которая выступает в роли эксперта по исследованиям и разработкам. Он может безопасно читать журналы за прошлые периоды или анализировать сложные запатентованные рецепты сплавов, чтобы прогнозировать механические свойства.
  • TimesFM (числовой прогнозировщик). Поскольку LLM иногда могут галлюцинировать числа, для тяжелой техники требуется специальная базовая модель временных рядов. TimesFM точно прогнозирует долгосрочные числовые горизонты (до 16 000 точек данных), считывая журналы вибрации и температуры, чтобы прогнозировать точные кривые отказов оборудования – полностью в автономном режиме.
  • TabFM (Tabular Reasoner). В то время как LLM обрабатывают текст, а TimesFM – числовые тренды, TabFM специализируется на рассуждениях на основе структурированных табличных данных. Вы можете безопасно запустить его локально, чтобы выполнять сложный анализ и получать ответы непосредственно из плотных многостолбцовых данных ERP или CRM без необходимости писать сложные соединения SQL.

История успеха

Профилактическое обслуживание 1500-тонного ковочного пресса:

Незапланированный простой этого огромного оборудования останавливает производство, тратя огромное количество времени и критически важных материалов. И наоборот, при плановом обслуживании часто заменяются дорогостоящие детали, которые ещё могли бы послужить, что приводит к лишним тратам. Нам нужно перейти от реактивного обслуживания к предиктивному, не нарушая воздушный зазор.

b00c0159d3e6724.png

Что вы узнаете

В этой практической работе:

  1. Вы будете использовать AlloyDB Omni для безопасного локального сбора данных датчиков вибрации и температуры. Чтобы сделать данные более реалистичными и полезными, можно добавить дополнительные параметры.
  2. Вы научитесь использовать Gemma для анализа тенденций на основе журналов сбоев.
  3. Вы создадите систему, которая будет прогнозировать сбои и автоматически создавать в ERP-системе тестовые заказы на обслуживание активов.

Мы используем Docker для подготовки локальной LLM и AlloyDB Omni. Преимущество этого подхода заключается в его простоте: AlloyDB Omni может автоматически управлять собственным внутренним процессом ML-Agent.

Требования

  • Базовые знания SQL.
  • Стандартная виртуальная машина Linux (например, Ubuntu 22.04) или локальный компьютер (macOS/Windows) с установленным Docker.

2. Запустите локальную LLM (Gemma 4)

Мы будем использовать Ollama для локального размещения Gemma. Создайте файл Dockerfile, чтобы настроить экземпляр Ollama:

  1. На локальном компьютере выполните в терминале следующие команды по очереди:
mkdir -p gemma4-ollama && cd gemma4-ollama
cat << 'EOF' > Dockerfile
FROM ollama/ollama:latest
ENV OLLAMA_HOST=0.0.0.0:8080
ENV OLLAMA_MODELS=/root/.ollama
ENV MODEL=gemma4:e2b
RUN ollama serve & sleep 5 && ollama pull $MODEL
ENTRYPOINT ["ollama", "serve"]
EOF
  1. Создайте и запустите контейнер в сети хоста:
docker build -t gemma4-local .

docker run --network host -d -p 8080:8080 --name gemma4-ollama-instance gemma4-local
  1. Вы можете протестировать его с помощью команды:
curl -X POST http://localhost:8080/api/generate -d '{
  "model": "gemma4:e2b",
  "prompt": "Hello! Explain Gemma 4 in a few sentences."
}'

3. Установка и запуск AlloyDB Omni

Затем запустите контейнер базы данных AlloyDB Omni, также в сети хоста:

docker run -d \
  --name my-omni \
  --network host \
  -e POSTGRES_PASSWORD=omni \
  gcr.io/alloydb-omni/alloydbomni:18

Если образ AlloyDB Omni не найден в облачном проекте Google Cloud, попробуйте выполнить аутентификацию, запустив следующую команду перед командой docker run:

gcloud auth login

После завершения аутентификации попробуйте снова выполнить команду docker run.

4. Как включить внутренний ML-агент

По умолчанию функции интеграции машинного обучения AlloyDB Omni отключены. Чтобы включить внутренний процесс ML-Agent и механизм запросов ИИ, нужно изменить файл postgresql.conf в контейнере.

Выполните следующую команду, чтобы добавить необходимые флаги:

docker exec -it my-omni sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
omni_enable_ml_agent_process = 'on'
google_ml_integration.enable_model_support = 'on'
google_ml_integration.enable_ai_query_engine = 'on'
EOF"

Перезапустите контейнер, чтобы применить изменения:

docker restart my-omni

Чтобы начать тестирование запросов, запустите psql с помощью следующей команды:

docker exec -it my-omni psql -U postgres

5. Как направить ИИ к локальной LLM

После подключения к базе данных через psql (docker exec -it my-omni psql -U postgres) вы можете зарегистрировать локальную модель, работающую без подключения к сети. Вместо того чтобы обращаться к интернету, направьте model_request_url на локальный сервер Ollama, работающий на порту 8080.

Выполните следующие инструкции SQL в командной строке psql в терминале:

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

CALL google_ml.create_model(
    model_id => 'gemma4:e2b',
    model_request_url => 'http://localhost:8080/api/generate',
    model_provider => 'custom',
    model_type => 'generic'
);

Теперь вы можете безопасно вызывать прогнозы из SQL:

SELECT google_ml.predict_row(
    'gemma4:e2b',
    '{"model": "gemma4:e2b", "prompt": "Why is the sky blue?", "stream": false}'
)->'response';

Вывод:

4873acf20ded9dd1.png

Теперь, когда мы протестировали его на общем тестовом примере, давайте добавим в картину данные нашего примера использования.

6. Создание схемы и импорт данных

Теперь давайте создадим схему и данные, необходимые для демонстрации.

Выполните следующие инструкции SQL в командной строке psql в терминале:

-- ==============================================================================
-- 1. Setup the Schema for the 1500T Forging Press
-- ==============================================================================
CREATE TABLE IF NOT EXISTS forging_press_logs (
    log_id SERIAL PRIMARY KEY,
    timestamp TIMESTAMP NOT NULL DEFAULT NOW(),
    cycle_id VARCHAR(50) NOT NULL,
    hyd_pressure_bar NUMERIC(5,2),
    oil_temp_c NUMERIC(5,2),
    vib_z_rms NUMERIC(5,2)
);

-- Clean up any existing data if running multiple times
TRUNCATE TABLE forging_press_logs;

-- ==============================================================================
-- 2. Generate 1,000 Records of Simulated Data
-- ==============================================================================
-- 99% of data is 'Normal'
INSERT INTO forging_press_logs (cycle_id, hyd_pressure_bar, oil_temp_c, vib_z_rms)
SELECT
    'C-' || LPAD(i::text, 5, '0'),
    280.0 + (random() * 10 - 5), -- Pressure around 280
    42.0 + (random() * 5),       -- Temp around 42-47
    1.8 + (random() * 0.5)       -- Vib Z around 1.8-2.3
FROM generate_series(1, 990) AS i;

-- 1% of data is 'Anomalous' (Hydraulic pressure drop & vibration spike)
INSERT INTO forging_press_logs (cycle_id, hyd_pressure_bar, oil_temp_c, vib_z_rms)
SELECT
    'C-' || LPAD((990 + i)::text, 5, '0'),
    250.0 + (random() * 5),      -- Pressure dropping
    55.0 + (random() * 5),       -- Temp rising
    5.0 + (random() * 1.5)       -- High vibration
FROM generate_series(1, 10) AS i;

-- ==============================================================================
-- 3. Run the AI Prediction via AlloyDB Omni
-- ==============================================================================
-- Ensure the model is registered (assuming 'gemma4:e2b' is running locally on port 8080)
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

DO $$ 
BEGIN
    CALL google_ml.create_model(
        model_id => 'gemma4:e2b',
        model_request_url => 'http://localhost:8080/api/generate',
        model_provider => 'custom',
        model_type => 'generic'
    );
EXCEPTION WHEN OTHERS THEN 
    -- Ignore error if model already exists
END $$;

-- Query the most recent 5 potentially anomalous records and ask Gemma for an analysis
SELECT 
    cycle_id,
    hyd_pressure_bar,
    vib_z_rms,
    google_ml.predict_row(
        model_id => 'gemma4:e2b',
        request_body => json_build_object(
            'model', 'gemma4:e2b',
            'stream', false,
            'prompt', 'You are an industrial engineer. Analyze this sensor data from a 1500T forging press: Pressure=' || hyd_pressure_bar || ' bar, Vibration=' || vib_z_rms || ' mm/s. Normal pressure is ~280 bar and normal vibration is ~2.0 mm/s. Does this indicate a hydraulic failure? Answer in one short sentence.'
        )
    )->>'response' AS ai_analysis
FROM 
    forging_press_logs
WHERE 
    hyd_pressure_bar < 260 OR vib_z_rms > 4.5
ORDER BY 
    timestamp DESC
LIMIT 5;

Последовательное выполнение приведенных выше инструкций должно привести к следующему результату:

e8fabd49e72c225e.png

Теперь, когда данные готовы, давайте перейдем к созданию панели мониторинга профилактического обслуживания.

7. Создание панели управления трансляциями

Чтобы по-настоящему визуализировать эту архитектуру, вы можете легко подключить ее к панели управления Python Flask, которая является веб-приложением.

Вместо того чтобы вручную выполнять SQL-запросы, легкий бэкенд Flask передает телеметрию датчиков в реальном времени на панель управления HTML. В нормальном режиме работы на панели просто строятся графики.

Но когда серверная часть обнаруживает аномалию (например, падение давления), код Python мгновенно запускает функцию google_ml.predict_row() внутри AlloyDB. AlloyDB передает контекст локальной модели Gemma, и выводы диагностики от ИИ появляются на панели управления в реальном времени.

💡 Совет по практической работе: Чтобы выйти из контейнера базы данных и вернуться в командную строку хоста, введите \q и нажмите Ввод (или откройте новую вкладку терминала). Затем выполните команды приложения Flask, приведенные ниже.

Вот как это сделать:

  1. Перейдите в среду разработки или редактор кода и откройте терминал.
  2. Выполните следующую команду:
pip install flask psycopg2-binary
  1. Клонируйте репозиторий кода в каталог проекта, выполнив в терминале Cloud Shell следующую команду:
git clone https://github.com/AbiramiSukumaran/gemma4-alloydb-omni-demo
  1. Перейдите в папку проекта:
cd gemma4-alloydb-omni-demo
  1. Запустите приложение:
python3 app.py

Откройте браузер или нажмите на ссылку, чтобы запустить приложение на локальном хосте.

db2249f5d7f87d4c.png

Что такое панель управления трансляциями

Приложение Flask выступает в качестве панели мониторинга в реальном времени для 1500-тонного ковочного пресса, визуализируя, как полностью автономная система с воздушным зазором справляется с профилактическим обслуживанием:

  • Непрерывный поток телеметрии. На панели управления в реальном времени отображаются данные о вибрации (мм/с) и гидравлическом давлении (бар), которые динамически обновляются, имитируя работу завода.
  • Выявление отклонений в базе данных на лету. Когда значение датчика падает ниже порогового (например, давление падает ниже 260 бар), бэкенд Python помечает событие и немедленно вызывает функцию google_ml.predict_row() в AlloyDB Omni.
  • Локальная ИИ-диагностика. AlloyDB Omni передает контекст в реальном времени локальной модели Gemma 4. Gemma действует как локальный промышленный эксперт, анализируя телеметрию и выводя диагностическое предупреждение (например, "Предупреждение: падение давления и высокая вибрация указывают на потенциальный отказ гидравлического уплотнения") непосредственно на панель управления.
  • Нулевая утечка. Все вычисления, базы данных, графики и рассуждения ИИ выполняются полностью на вашем локальном хосте без необходимости подключения к интернету.

8. Путь к рабочей версии

Чтобы масштабировать эту архитектуру от локального прототипа до развертывания на уровне производства без ущерба для безопасности, вы можете выбрать один из двух стандартных вариантов локальной установки:

Рабочие виртуальные машины и физические серверы (неконтейнеризованные):

Для сред, где контейнеризация нежелательна или где политика безопасности требует глубокой интеграции с операционной системой хоста, вы можете выполнить развертывание с помощью официального пакета AlloyDB Omni RPM. Благодаря оркестратору AlloyDB Omni Red Hat RPM это развертывание обеспечивает низкую задержку, соответствие SELinux и автоматическую высокую доступность непосредственно на локальных виртуальных машинах RHEL или Rocky Linux полностью в офлайн-режиме.

Production Kubernetes и HA:

Если инфраструктура вашего завода использует локальную оркестрацию, вы можете развернуть AlloyDB Omni в Kubernetes . Используя официальный оператор AlloyDB Omni Kubernetes, вы можете декларативно развернуть надежный кластер базы данных с синхронными резервными репликами, автоматическим локальным резервным копированием и выделенными конечными точками только для чтения.

9. Поздравляем!

Для оборонной промышленности и других отраслей, где используются изолированные сети, выбор больше не стоит между строгой безопасностью и технологическими инновациями. Развертывая контейнеризированные базы данных, специализированные прокси-модели и ИИ с открытыми весами на суверенном оборудовании, вы можете превратить свой завод в интеллектуальную, прогнозирующую электростанцию, сохраняя при этом свой цифровой ров полностью нетронутым.