1. Введение
Обзор
Цель этой лабораторной работы — предоставить вам практический опыт развертывания открытой модели в Google Cloud, начиная с простой локальной настройки и заканчивая развертыванием промышленного уровня на Google Kubernetes Engine (GKE) . Вы научитесь использовать различные инструменты, подходящие для каждого этапа жизненного цикла разработки.
Лаборатория следует следующему пути:
- Быстрое прототипирование : сначала вы запустите модель с помощью Ollama локально, чтобы увидеть, насколько легко начать работу.
- Развертывание производства : Наконец, вы развернете модель в GKE Autopilot, используя Ollama в качестве масштабируемого сервисного механизма.
Понимание открытых моделей
Под «открытой моделью» в наши дни обычно подразумевают генеративную модель машинного обучения, которая доступна для скачивания и использования всем желающим . Это означает, что архитектура модели и, что самое важное, её обученные параметры, или «веса», опубликованы.
Такая прозрачность обеспечивает ряд преимуществ по сравнению с закрытыми моделями, доступ к которым обычно осуществляется только через ограничительный API:
- Понимание : разработчики и исследователи могут заглянуть «под капот», чтобы понять внутреннюю работу модели.
- Настройка : пользователи могут адаптировать модель для конкретных задач с помощью процесса, называемого тонкой настройкой.
- Инновации : это дает сообществу возможность создавать новые и инновационные приложения на основе существующих мощных моделей.
Вклад Google и семья Джемма
Компания Google уже много лет вносит основополагающий вклад в движение ИИ с открытым исходным кодом. Революционная архитектура Transformer, представленная в статье 2017 года «Внимание — всё, что вам нужно» , лежит в основе практически всех современных больших языковых моделей. За ней последовали знаковые открытые модели, такие как BERT, T5 и Flan-T5 с настраиваемыми инструкциями, каждая из которых раздвигала границы возможного и стимулировала исследования и разработки по всему миру.
Опираясь на богатую историю открытых инноваций, Google представила семейство моделей Gemma . Модели Gemma созданы на основе тех же исследований и технологий, что и мощные модели Gemini с закрытым исходным кодом, но доступны с открытыми весовыми коэффициентами. Для клиентов Google Cloud это обеспечивает мощное сочетание передовых технологий и гибкости открытого исходного кода, позволяя им контролировать жизненный цикл модели, интегрироваться с разнообразной экосистемой и реализовывать многооблачную стратегию.
В центре внимания Джемма 3
В этой лабораторной работе мы сосредоточимся на Gemma 3, новейшем и самом мощном поколении в этом семействе. Модели Gemma 3 лёгкие, но современные и разработаны для эффективной работы на одном графическом процессоре или даже на одном центральном процессоре.
- Производительность и размер : модели Gemma 3 лёгкие, но при этом современные, разработаны для эффективной работы с одним графическим процессором или даже центральным процессором. Они обеспечивают превосходное качество и производительность на уровне SOTA для своего размера.
- Модальность : они многомодальны, способны обрабатывать как текстовый ввод, так и ввод изображений для генерации текстового вывода.
- Основные характеристики : Gemma 3 имеет большое контекстное окно объемом 128 КБ и поддерживает более 140 языков.
- Примеры использования : эти модели хорошо подходят для решения различных задач, включая ответы на вопросы, подведение итогов и рассуждения.
Ключевая терминология
Работая с открытыми моделями, вы столкнетесь с несколькими распространенными терминами:
- Предварительное обучение включает в себя обучение модели на большом и разнообразном наборе данных для изучения общих языковых закономерностей. Эти модели, по сути, представляют собой мощные системы автодополнения.
- Настройка инструкций позволяет оптимизировать предварительно обученную модель для лучшего выполнения конкретных инструкций и подсказок. Такие модели «умеют общаться».
- Варианты моделей : Открытые модели обычно выпускаются в нескольких размерах (например, Gemma 3 имеет версии параметров 1B, 4B, 12B и 27B) и вариантах, таких как настроенные на инструкции (-it), предварительно обученные или квантованные для эффективности.
- Потребности в ресурсах : Большие языковые модели имеют большой объём и требуют значительных вычислительных ресурсов для размещения. Хотя их можно запускать локально, их развёртывание в облаке даёт существенные преимущества, особенно при оптимизации производительности и масштабируемости с помощью таких инструментов, как Ollama.
Почему GKE подходит для обслуживания открытых моделей?
Эта лабораторная работа поможет вам пройти путь от простого локального выполнения модели до полномасштабного развертывания в производственной среде на Google Kubernetes Engine (GKE). Хотя такие инструменты, как Ollama, отлично подходят для быстрого создания прототипов, производственные среды предъявляют высокие требования, для удовлетворения которых GKE идеально подходит.
Для крупномасштабных приложений ИИ вам нужна не просто работающая модель, а отказоустойчивая, масштабируемая и эффективная обслуживающая инфраструктура. GKE обеспечивает такую основу. Вот когда и почему стоит выбрать GKE:
- Упрощённое управление с помощью Autopilot : GKE Autopilot управляет базовой инфраструктурой автоматически. Вы сосредотачиваетесь на настройке приложений, а Autopilot автоматически выделяет ресурсы и масштабирует узлы.
- Высокая производительность и масштабируемость : обрабатывайте требовательный и переменчивый трафик с помощью автоматического масштабирования GKE. Это гарантирует вашему приложению высокую пропускную способность с низкой задержкой, масштабируясь по мере необходимости.
- Эффективность затрат при масштабировании : эффективное управление ресурсами. GKE позволяет масштабировать рабочие нагрузки до нуля, избегая расходов на простаивающие ресурсы, а также использовать виртуальные машины Spot для значительного снижения затрат на рабочие нагрузки вывода без сохранения состояния.
- Портативность и богатая экосистема : избавьтесь от привязки к поставщику благодаря портативному развертыванию на базе Kubernetes. GKE также предоставляет доступ к обширной экосистеме Cloud Native (CNCF) для лучших в своем классе инструментов мониторинга, регистрации и безопасности.
Короче говоря, вы переходите на GKE, когда ваше ИИ-приложение готово к производству и требует платформы, рассчитанной на серьезный масштаб, производительность и эксплуатационную зрелость.
Чему вы научитесь
В этой лабораторной работе вы научитесь выполнять следующие задачи:
- Запустите открытую модель локально с помощью Ollama.
- Разверните открытую модель в Google Kubernetes Engine (GKE) Autopilot с Ollama для обслуживания.
- Понять переход от локальных фреймворков разработки к архитектуре обслуживания производственного уровня на GKE.
2. Настройка проекта
Аккаунт Google
Если у вас еще нет личного аккаунта Google, вам необходимо создать аккаунт Google .
Используйте личный аккаунт вместо рабочего или школьного.
Войдите в Google Cloud Console.
Войдите в Google Cloud Console, используя личный аккаунт Google.
Включить биллинг
Настройте личный платежный аккаунт
Если вы настраиваете оплату с использованием кредитов Google Cloud, вы можете пропустить этот шаг.
Чтобы настроить персональную учетную запись для выставления счетов, перейдите сюда и включите выставление счетов в Cloud Console.
Некоторые заметки:
- Выполнение этой лабораторной работы обойдется менее чем в 1 доллар США в виде облачных ресурсов.
- Вы можете следовать инструкциям в конце этой лабораторной работы, чтобы удалить ресурсы и избежать дальнейших расходов.
- Новые пользователи имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Создать проект (необязательно)
Если у вас нет текущего проекта, который вы хотели бы использовать для этого ярлыка, создайте новый проект здесь .
3. Откройте редактор Cloud Shell
- Нажмите эту ссылку, чтобы перейти непосредственно в редактор Cloud Shell.
- Если сегодня в какой-либо момент вам будет предложено авторизоваться, нажмите «Авторизовать» , чтобы продолжить.

- Если терминал не отображается внизу экрана, откройте его:
- Нажмите «Просмотр»
- Нажмите «Терминал»

- В терминале настройте свой проект с помощью этой команды:
gcloud config set project [PROJECT_ID]- Пример:
gcloud config set project lab-project-id-example - Если вы не можете вспомнить идентификатор своего проекта, вы можете перечислить все идентификаторы своих проектов с помощью:
gcloud projects list
- Пример:
- Вы должны увидеть это сообщение:
Updated property [core/project].
4. Запустите Джемму с Олламой
Ваша первая цель — как можно быстрее запустить Gemma 3 в среде разработки. Вы будете использовать Ollama — инструмент, который значительно упрощает локальный запуск больших языковых моделей. Это задание покажет вам самый простой способ начать экспериментировать с открытой моделью.
Ollama — это бесплатный инструмент с открытым исходным кодом, позволяющий пользователям запускать генеративные модели (большие языковые модели, модели «визуализация-язык» и другие) локально на своих компьютерах. Ollama упрощает доступ к этим моделям и взаимодействие с ними, делая их более доступными и позволяя пользователям работать с ними конфиденциально.
Установите и запустите Ollama
Теперь вы готовы установить Ollama, загрузить модель Gemma 3 и взаимодействовать с ней из командной строки.
- В терминале Cloud Shell загрузите и установите Ollama:
Эта команда загружает Ollama, устанавливает его и запускает службу Ollama.curl -fsSL https://ollama.com/install.sh | sh - Запустите службу Ollama в фоновом режиме:
ollama serve & - Загрузите (извлеките) модель Gemma 3 1B с помощью Ollama:
ollama pull gemma3:1b - Запустите модель локально:
Командаollama run gemma3:1bollama runвыводит приглашение (>>>), позволяющее вам задать вопросы модели. - Проверьте модель, задав вопрос. Например, введите «
Why is the sky blue?и нажмите клавишу ENTER. Вы должны увидеть ответ, подобный следующему:>>> Why is the sky blue? Okay, let's break down why the sky is blue – it's a fascinating phenomenon related to how light interacts with the Earth's atmosphere. Here's the explanation: **1. Sunlight and Colors:** * Sunlight appears white, but it's actually made up of all the colors of the rainbow (red, orange, yellow, green, blue, indigo, and violet). Think of a prism splitting sunlight. **2. Rayleigh Scattering:** * As sunlight enters the Earth's atmosphere... ...
- Чтобы выйти из командной строки Ollama в Терминале, введите
/byeи нажмите ENTER.
Используйте OpenAI SDK с Ollama
Теперь, когда сервис Ollama запущен, вы можете взаимодействовать с ним программно. Для этого вам понадобится OpenAI Python SDK, совместимый с API, предоставляемым Ollama.
- В терминале Cloud Shell создайте и активируйте виртуальную среду с помощью uv. Это гарантирует отсутствие конфликтов между зависимостями вашего проекта и системным Python.
uv venv --python 3.14 source .venv/bin/activate - В терминале установите OpenAI SDK:
uv pip install openai - Создайте новый файл с именем
ollama_chat.py, введя в терминал:cloudshell edit ollama_chat.py - Вставьте следующий код Python в файл
ollama_chat.py. Этот код отправляет запрос на локальный сервер Ollama.from openai import OpenAI client = OpenAI( base_url = 'http://localhost:11434/v1', api_key='ollama', # required by OpenAI SDK, but not used by Ollama ) response = client.chat.completions.create( model="gemma3:1b", messages=[ { "role": "user", "content": "Why is the sky blue?" }, ], ) print(response.choices[0].message.content) - Запустите скрипт в терминале:
Через несколько секунд вы увидите ответ, аналогичный тому, который вы получили из командной строки.python3 ollama_chat.py - Чтобы попробовать потоковый режим, создайте еще один файл с именем
ollama_stream.py, выполнив в терминале следующее:cloudshell edit ollama_stream.py - Вставьте следующий текст в файл
ollama_stream.py. Обратите внимание на параметрstream=Trueв запросе. Это позволяет модели возвращать токены сразу после их генерации.from openai import OpenAI client = OpenAI( base_url = 'http://localhost:11434/v1', api_key='ollama', ) stream = client.chat.completions.create( model="gemma3:1b", messages=[ { "role": "user", "content": "Why is the sky blue?" }, ], stream=True ) for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="", flush=True) print() - Запустите скрипт потоковой передачи в терминале:
Ответ теперь будет отображаться токен за токеном.python3 ollama_stream.py
Потоковая передача данных — полезная функция для создания комфортного пользовательского опыта в интерактивных приложениях, таких как чат-боты. Вместо того, чтобы заставлять пользователя ждать, пока будет сгенерирован весь ответ, потоковое вещание отображает ответ токен за токеном по мере его формирования. Это обеспечивает мгновенную обратную связь и делает приложение гораздо более отзывчивым.
Чему вы научились: запуск открытых моделей с помощью Ollama
Вы успешно запустили открытую модель с помощью Ollama. Вы увидели, насколько просто загрузить мощную модель, такую как Gemma 3, и взаимодействовать с ней как через интерфейс командной строки, так и программно на Python. Этот рабочий процесс идеально подходит для быстрого прототипирования и локальной разработки. Теперь у вас есть прочная основа для изучения более сложных вариантов развертывания.
5. Развертывание Gemma с Ollama на GKE Autopilot
Для производственных рабочих нагрузок, требующих упрощения операций и масштабируемости, платформа Google Kubernetes Engine (GKE) — оптимальный выбор. В этом задании вы развернёте Gemma с помощью Ollama в кластере GKE Autopilot.
GKE Autopilot — это режим работы GKE, в котором Google управляет конфигурацией вашего кластера, включая узлы, масштабирование, безопасность и другие предустановленные параметры. Он создаёт по-настоящему «бессерверный» опыт Kubernetes, идеально подходящий для выполнения рабочих нагрузок вывода без управления базовой вычислительной инфраструктурой.
Подготовка среды GKE
Для выполнения последней задачи развертывания в Kubernetes вам необходимо подготовить кластер GKE Autopilot.
- В терминале Cloud Shell задайте переменные среды для вашего проекта и нужного региона.
export PROJECT_ID=$(gcloud config get-value project) export REGION=europe-west1 gcloud config set compute/region $REGION - Включите API GKE для своего проекта, выполнив в терминале следующую команду:
gcloud services enable container.googleapis.com - Создайте кластер GKE Autopilot, выполнив в терминале следующее:
gcloud container clusters create-auto gemma-cluster \ --region $REGION \ --release-channel rapid - Получите учетные данные для нового кластера, выполнив в терминале следующую команду:
gcloud container clusters get-credentials gemma-cluster \ --region $REGION
Развертывание Олламы и Джеммы
Теперь, когда у вас есть кластер GKE Autopilot, вы можете развернуть сервер Ollama. Autopilot автоматически выделит вычислительные ресурсы (ЦП и память) в соответствии с требованиями, указанными в манифесте развертывания.
- Создайте новый файл с именем
gemma-deployment.yaml, выполнив в терминале следующее:cloudshell edit gemma-deployment.yaml - Вставьте следующую конфигурацию YAML в файл
gemma-deployment.yaml. Эта конфигурация определяет развертывание, использующее официальный образ Ollama для работы на ЦП. Вот объяснение конфигурации автопилота:apiVersion: apps/v1 kind: Deployment metadata: name: ollama-gemma spec: replicas: 1 selector: matchLabels: app: ollama-gemma template: metadata: labels: app: ollama-gemma spec: containers: - name: ollama-gemma-container image: ollama/ollama:0.12.10 resources: requests: cpu: "8" memory: "8Gi" ephemeral-storage: "10Gi" limits: cpu: "8" memory: "8Gi" ephemeral-storage: "10Gi" # We use a script to start the server and pull the model command: ["/bin/bash", "-c"] args: - | ollama serve & OLLAMA_PID=$! echo "Waiting for Ollama server to start..." sleep 5 echo "Pulling Gemma model..." ollama pull gemma3:1b echo "Model pulled. Ready to serve." wait $OLLAMA_PID ports: - containerPort: 11434 env: - name: OLLAMA_HOST value: "0.0.0.0" --- apiVersion: v1 kind: Service metadata: name: llm-service spec: selector: app: ollama-gemma type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 11434-
image: ollama/ollama:latest: это указывает на официальный образ Ollama Docker. -
resources: мы явно запрашиваем 8 виртуальных ЦП и 8 ГБ памяти. GKE Autopilot использует эти значения для обеспечения базовых вычислений. Поскольку мы не используем графические процессоры, модель будет работать на центральном процессоре. 8 ГБ памяти достаточно для хранения модели Gemma 1B и её контекста. -
command/args: Мы переопределяем команду запуска, чтобы обеспечить загрузку модели при запуске модуля. Скрипт запускает сервер в фоновом режиме, дожидается его готовности, загрузку моделиgemma3:1bи затем поддерживает работу сервера. -
OLLAMA_HOST: установка значения0.0.0.0гарантирует, что Ollama будет прослушивать все сетевые интерфейсы внутри контейнера, что сделает его доступным для службы Kubernetes.
-
- В терминале примените манифест развертывания к вашему кластеру:
Автопилоту потребуется несколько минут для подготовки ресурсов и запуска модуля. Вы можете отслеживать процесс с помощью:kubectl apply -f gemma-deployment.yaml Подождите, пока статус модуля не станетkubectl get pods --watchRunning, аREADYне станет1/1прежде чем продолжить.
Тестирование конечной точки GKE
Ваш сервис Ollama теперь запущен в кластере GKE Autopilot. Чтобы протестировать его из терминала Cloud Shell, используйте kubectl port-forward .
- Откройте новую вкладку терминала Cloud Shell (щёлкните по значку «+» в окне терминала). Команда
port-forward— это блокирующий процесс, поэтому для неё требуется отдельный сеанс терминала. - В новом терминале выполните следующую команду для переадресации локального порта (например,
8000) на порт службы (8000): Вы увидите вывод, указывающий на начало пересылки. Оставьте терминал запущенным.kubectl port-forward service/llm-service 8000:8000 - Вернитесь к исходному терминалу .
- Отправьте запрос на ваш локальный порт
8000Сервер Ollama предоставляет API, совместимый с OpenAI, и благодаря переадресации порта вы теперь можете получить к нему доступ по адресуhttp://127.0.0.1:8000. Служба вернет JSON-ответ с информацией о завершении модели.curl http://127.0.0.1:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gemma3:1b", "messages": [ {"role": "user", "content": "Explain why the sky is blue."} ] }'
6. Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, используемые в этой лабораторной работе, выполните следующие действия для удаления кластера GKE.
- В терминале Cloud Shell удалите кластер GKE Autopilot:
Эта команда удалит кластер и все связанные с ним ресурсы.gcloud container clusters delete gemma-cluster \ --region $REGION --quiet
7. Заключение
Отличная работа! В этой лабораторной работе вы рассмотрели несколько ключевых методов развёртывания открытых моделей в Google Cloud. Вы начали с простоты и скорости локальной разработки с помощью Ollama. Наконец, вы развернули Gemma в масштабируемой среде производственного уровня с помощью Google Kubernetes Engine Autopilot и фреймворка Ollama.
Теперь вы обладаете знаниями, необходимыми для развертывания открытых моделей на базе Google Kubernetes Engine для ресурсоемких масштабируемых рабочих нагрузок без необходимости управления базовой инфраструктурой.
Резюме
В этой лабораторной работе вы узнали:
- Что такое открытые модели и почему они важны.
- Как запустить открытую модель локально с помощью Ollama.
- Как развернуть открытую модель на автопилоте Google Kubernetes Engine (GKE) с использованием Ollama для вывода.
Узнать больше
- Подробнее о моделях Gemma читайте в официальной документации .
- Больше примеров можно найти в репозитории Google Cloud Generative AI на GitHub.
- Узнайте больше о GKE Autopilot .
- Просмотрите Vertex AI Model Garden для поиска других доступных открытых и фирменных моделей.