28 августа 2026 г.
Бокс

План миграции Hugging Face: что нужно знать при сделке с NVIDIA

28 августа 2026 г.Платон Велесов15 мин

Команды, разрабатывающие ML-пайплайны на базе инфраструктуры Hugging Face, столкнулись с новым фактором планирования. По сообщениям TechCrunch, NVIDIA близка к заключению сделки о приобретении Hugging Face. Сделка еще не завершена, регуляторы проводят проверку, и стороны не раскрывают финальные условия. Однако для любой организации, которая использует Hugging Face для хостинга моделей, конечных точек инференса или фронтенд-пайплайнов машинного обучения, сейчас самое время провести аудит зависимостей Hugging Face, наметить альтернативы и разработать план миграции, который команда сможет выполнить при необходимости, без преждевременных изменений.

Эта статья предлагает структурированный чек-лист по миграции с Hugging Face: фреймворк аудита зависимостей, матрицу альтернативных поставщиков и конкретные примеры кода для зеркалирования репозиториев, абстрагирования слоев инференса и замены фронтенд-сред выполнения.

Что известно, а что нет

Подтвержденные факты против заявленных условий

В отчете TechCrunch говорится, что NVIDIA «близка к заключению» сделки о приобретении Hugging Face. Эта формулировка имеет решающее значение. «Близка к заключению» не означает «заключила». Сделка остается на рассмотрении регуляторов, и публичных заявлений, подтверждающих окончательную цену, структурные условия или обязательства по управлению, нет. Очевидно, что NVIDIA давно заинтересована в GPU-облачной инфраструктуре и инструментах оптимизации моделей, что делает Hugging Face привлекательной целью, заполняющей пробелы в стеке NVIDIA от инференса до обучения. Текущие инвестиции NVIDIA в ускорение инференса (TensorRT, Triton Inference Server) и партнерства в рамках DGX Cloud позиционируют приобретение как вертикальную интеграцию, а не горизонтальное расширение.

Почему «заявленная» сделка важна для планирования

Различие между заявленной и завершенной сделкой должно определять реакцию команд. Преждевременная миграция несет реальные издержки: сбои в CI/CD-пайплайнах, потеря контекста сообщества и часы работы инженеров, потраченные на решение проблем, которые могут так и не возникнуть. Правильная стратегия — провести аудит сейчас и действовать по необходимости. В этой статье все рекомендации представлены как подготовка, а не эвакуация.

Преждевременная миграция несет реальные издержки: сбои в CI/CD-пайплайнах, потеря контекста сообщества и часы работы инженеров, потраченные на решение проблем, которые могут так и не возникнуть.

Анализ зависимостей Hugging Face

Пять уровней зависимостей

Прежде чем оценивать риски или намечать пути отхода, командам необходимо четко понять, где именно Hugging Face занимает свое место в их стеке. Зависимости обычно распределяются по пяти уровням:

  1. Хостинг моделей. Репозитории на huggingface.co хранят веса моделей, файлы конфигурации и токены. Эти репозитории основаны на Git, а большие файлы управляются с помощью Git Xet (уровень хранения Hugging Face для больших файлов в репозиториях Hub, альтернатива Git LFS для репозиториев, размещенных на Hub). Любая модель, загруженная во время сборки или развертывания из Hub, является зависимостью хостинга.
  2. Python SDK huggingface_hub — это программный интерфейс к Hub. Скрипты обучения, конфигурации обслуживания и пайплайны загрузки данных, вызывающие методы hf_hub_download, snapshot_download или HfApi, связаны с SDK.
  3. API инференса и конечные точки инференса. Команды, использующие размещенные Hugging Face маршруты предсказаний, будь то бесплатный Inference API или выделенные Inference Endpoints, имеют зависимость от инфраструктуры обслуживания Hugging Face во время выполнения.
  4. Фронтенд и периферийные развертывания полагаются на Transformers.js для инференса ML в браузере, часто в сочетании с WebGPU для аппаратного ускорения. Демонстрации в браузере, периферийные приложения и конвейеры классификации на стороне клиента, которые импортируют из @huggingface/transformers (текущий официальный пакет) или @xenova/transformers (устаревший предшественник; не взаимозаменяем с текущим пакетом), относятся к этому уровню.
  5. Сообщество и наборы данных. Spaces, ветки обсуждений, карточки наборов данных и метаданные моделей, предоставленные сообществом, представляют собой менее ощутимую, но реальную зависимость. Потеря доступа к документации наборов данных, эталонам оценки или отчетам сообщества о проблемах может замедлить разработку, даже если необработанные веса моделей останутся доступными.

Быстрая самооценка

Используйте эти вопросы, чтобы выявить скрытые зависимости в вашем стеке.

Связь сборки и развертывания:

  • Ваши Dockerfile фиксируют определенную версию huggingface_hub, или они устанавливают последнюю версию при каждой сборке?
  • Веса моделей кэшируются локально или загружаются из Hub во время развертывания?
  • CI/CD-пайплайны вызывают huggingface-cli или HfApi для загрузки, скачивания моделей или запросов метаданных?
  • Вы настроили токены Hugging Face как секреты в средах CI/CD?

Время выполнения и обслуживание:

  • Какие-либо производственные маршруты инференса обращаются к Hugging Face Inference Endpoints вместо собственного обслуживания?
  • Фронтенд-приложения импортируют Transformers.js для инференса на стороне клиента?

Зависимости от данных и документации:

  • Скрипты загрузки наборов данных используют datasets.load_dataset с идентификаторами наборов данных, размещенных на Hub?
  • Какие-либо скрипты дообучения или оценки предполагают наличие базовых моделей, размещенных на Hub, в качестве начальных контрольных точек?
import os
import json
import logging
import argparse
from huggingface_hub import HfApi
from huggingface_hub.utils import HfHubHTTPError

logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')

parser = argparse.ArgumentParser(description='Generate HF org dependency manifest.')
parser.add_argument('--org', default=os.environ.get('HF_ORG'), required=not os.environ.get('HF_ORG'))
parser.add_argument('--output', default='hf_dependency_manifest.json')
args = parser.parse_args()

HF_TOKEN = os.environ.get('HF_TOKEN')
api = HfApi(token=HF_TOKEN)

manifest = {'models': [], 'datasets': [], 'spaces': []}
errors = []

for kind, lister, key in [
    ('models',   lambda: api.list_models(author=args.org),   'models'),
    ('datasets', lambda: api.list_datasets(author=args.org), 'datasets'),
    ('spaces',   lambda: api.list_spaces(author=args.org),   'spaces'),
]:
    try:
        for item in lister():
            manifest[key].append(item.id)
    except HfHubHTTPError as exc:
        logging.error('Failed to list %s: HTTP %s — %s', kind, exc.response.status_code, exc)
        errors.append({'kind': kind, 'error': str(exc)})
    except Exception as exc:
        logging.error('Unexpected error listing %s: %s', kind, exc)
        errors.append({'kind': kind, 'error': str(exc)})

if errors:
    manifest['_errors'] = errors
    logging.warning('Manifest may be incomplete. %d listing(s) failed.', len(errors))

output_path = os.path.abspath(args.output)
with open(output_path, 'w') as f:
    json.dump(manifest, f, indent=2)

logging.info(
    'Manifest written to %s — %d models, %d datasets, %d spaces.',
    output_path,
    len(manifest['models']),
    len(manifest['datasets']),
    len(manifest['spaces']),
)

if errors:
    raise SystemExit(1)

Этот скрипт использует HfApi из huggingface_hub для перечисления каждой модели, набора данных и пространства, принадлежащих организации, создавая JSON-манифест, который служит отправной точкой для аудита зависимостей. Он принимает аргументы --org и --output, корректно обрабатывает ошибки API и сообщает о неполных манифестах.

Рабочий лист аудита зависимостей

Как читать рабочий лист

Представленный ниже рабочий лист предназначен для копирования и вставки в командную вики, электронную таблицу или инструмент управления проектами. Каждая строка представляет один из пяти уровней зависимостей. Команды должны заполнить столбец «Текущий поставщик» своими фактическими данными использования, оценить уровень риска в зависимости от того, насколько тесно связаны их рабочие процессы с Hugging Face, определить запасного поставщика и оценить усилия по миграции в днях работы инженеров.

Заполнение: разобранный пример

Рассмотрим вымышленный стартап в области NLP, «SentimentCo», который использует семь моделей, размещенных на Hugging Face, в производственной среде, запускает две выделенные конечные точки инференса для классификации в реальном времени, размещает демонстрацию с Transformers.js для инвесторов, загружает три набора данных из Hub для ночного переобучения и поддерживает карточки моделей как единственную документацию по моделям.

Их заполненный рабочий лист может выглядеть так:

Уровень зависимости Текущий поставщик Уровень риска Запасной поставщик Усилия по миграции
Хостинг моделей (7 моделей) Репозитории huggingface.co Высокий S3 + внутренняя база моделей 3-5 дней
Python SDK (huggingface_hub) PyPI / Hub API Средний Зафиксированная версия + уровень абстракции 1-2 дня
Конечные точки инференса (2 производственные) HF Inference Endpoints Высокий Конечные точки AWS SageMaker 5-8 дней
Фронтенд (демо Transformers.js) Transformers.js + WebGPU Средний ONNX Runtime Web 2-3 дня
Наборы данных и сообщество (3 набора данных, карточки моделей) HF Datasets, Hub cards Низкий Локальные зеркала наборов данных + внутренняя документация 1-2 дня

Столбец «Уровень риска» отражает операционное влияние в случае нарушения доступа, а не вероятность нарушения. Пункты с высоким риском — это те, где изменение ценообразования, ограничений скорости или условий обслуживания напрямую нарушит производственные системы.

Матрица альтернативных поставщиков

Альтернативы хостингу моделей

Для команд, хранящих веса моделей на Hub, альтернативы включают самообслуживаемые репозитории Git LFS или DVC, AWS S3 в сочетании с базой моделей, такой как MLflow, Weights & Biases Artifacts для хранения версионированных моделей, хостинг моделей Replicate и GitHub Packages для меньших моделей. Каждая альтернатива обменивает функции обнаружения и сообщества Hub на больший контроль над доступом и ценообразованием.

Альтернативы инференсу

Самое сложное при отказе от Hugging Face Inference Endpoints — это накладные расходы на конфигурацию. SageMaker и Vertex AI поддерживают автоматическое масштабирование до нуля и мультимодельные конечные точки, что обеспечивает максимальное соответствие функций управляемому инференсу, но каждая обычно требует 50-100 строк IaC (Terraform/CloudFormation) на конечную точку по сравнению с одним вызовом API Hugging Face. Инференс на основе API Replicate и самообслуживаемые решения, такие как Ollama для рабочих нагрузок LLM, обменивают управляемое масштабирование на более простую настройку. Автоматическое масштабирование SageMaker требует отдельной конфигурации Application Auto Scaling, которая здесь не рассматривается.

Альтернативы фронтенду и периферии

ONNX Runtime Web предоставляет зрелую альтернативу Transformers.js для инференса в браузере, с поддержкой бэкенда WebGPU. MediaPipe (кроссплатформенная ML-платформа Google; ранние версии использовали TFLite, текущие версии используют собственный движок инференса MediaPipe) охватывает задачи обработки изображений и текста с оптимизированными средами выполнения в браузере. Для специфических случаев использования LLM, llama.cpp, скомпилированный в WASM, предлагает автономный вариант. Пользовательские шейдеры вычислений WebGPU остаются жизнеспособным вариантом для команд со специализированными требованиями к ядрам.

Альтернативы наборам данных и сообществу

Kaggle Datasets, DagsHub и OpenML предоставляют хостинг общедоступных наборов данных с различными инструментами сообщества. Самообслуживаемые базы данных наборов данных, основанные на облачном хранилище и базах данных метаданных, предлагают наибольший контроль, но жертвуют обнаруживаемостью.

Функция HF Альтернативный поставщик 1 Альтернативный поставщик 2 Альтернативный поставщик 3 Примечания
Репозитории моделей S3 + MLflow W&B Artifacts Replicate S3+MLflow наиболее гибкий для команд, уже использующих MLflow для отслеживания экспериментов; W&B лучше для интеграции отслеживания экспериментов
Конечные точки инференса AWS SageMaker Google Vertex AI Ollama (самообслуживание) SageMaker ближе всего по функциональности (автоматическое масштабирование требует дополнительной настройки); Ollama только для LLM, без горизонтального автоматического масштабирования
Transformers.js ONNX Runtime Web MediaPipe llama.cpp WASM ONNX Runtime Web имеет самую широкую совместимость моделей
Наборы данных Kaggle Datasets DagsHub OpenML Kaggle — большой общедоступный каталог; DagsHub — лучший Git-ориентированный рабочий процесс
Spaces (демо) Streamlit Cloud Gradio на пользовательской инфраструктуре Vercel + пользовательский фронтенд Gradio работает без HF Spaces; Streamlit — самая простая миграция для Spaces на базе Gradio (обратите внимание на ограничения бесплатного уровня)

Практический план миграции

Шаг 1: Зеркалируйте репозитории моделей сегодня

Наименее рискованный и наиболее ценный шаг: создать локальные или облачные зеркала всех репозиториев моделей, от которых зависит организация. Функция snapshot_download библиотеки huggingface_hub извлекает все файлы, включая большие файлы, управляемые Git Xet. Для полного сохранения истории Git объедините это с git clone --mirror.

⚠ Предупреждение о затратах: затраты на хранение и передачу данных зависят от размера модели. Большие языковые модели с весами размером в несколько гигабайт потребуют значительного выделения дискового пространства. Зеркалирование всех моделей организации может привести к сотням гигабайт хранилища S3 и расходам на передачу данных. Команды должны оценить, нужна ли им полная история версий или только последний снимок. Используйте --storage-class STANDARD для синхронизации; S3 STANDARD_IA имеет минимальный размер объекта для биллинга 128 КБ и минимальный срок хранения 30 дней, что увеличивает затраты для небольших файлов конфигурации. Примените правило жизненного цикла к бакету для перехода больших объектов в STANDARD_IA через 30 дней, если это необходимо.

Предварительные условия

  • Python ≥3.8
  • huggingface_hub предварительно установлен в зафиксированной версии (см. Шаг 3)
  • AWS CLI установлен и настроен с действительными учетными данными и целевым регионом
  • Переменная среды HF_TOKEN установлена (требуется для частных репозиториев)
  • Bash shell

Сохраните следующее как mirror_models.py:

import os
import logging
import time
from huggingface_hub import HfApi, snapshot_download

logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')

HF_TOKEN = os.environ.get('HF_TOKEN')
ORG = os.environ.get('ORG')
MIRROR_DIR = os.environ.get('MIRROR_DIR')

if not ORG:
    raise EnvironmentError('ORG environment variable must be set.')
if not MIRROR_DIR:
    raise EnvironmentError('MIRROR_DIR environment variable must be set.')

api = HfApi(token=HF_TOKEN)

for model in api.list_models(author=ORG):
    
    safe_name = model.id.replace('/', '__').lstrip('.')
    dest = os.path.join(MIRROR_DIR, safe_name)

    
    resolved = os.path.realpath(dest)
    if not resolved.startswith(os.path.realpath(MIRROR_DIR)):
        logging.error('Skipping %s: resolved path escapes MIRROR_DIR', model.id)
        continue

    t0 = time.perf_counter()
    try:
        local_path = snapshot_download(
            repo_id=model.id,
            local_dir=dest,
            token=HF_TOKEN,        
        )
        elapsed = time.perf_counter() - t0
        logging.info('Mirrored %s to %s in %.1fs', model.id, local_path, elapsed)
    except Exception as exc:
        logging.error('Failed to mirror %s: %s', model.id, exc)

Затем запустите зеркалирование из shell-скрипта:

#!/bin/bash


set -euo pipefail

: '${ORG:?ORG environment variable must be set}'
: '${MIRROR_DIR:?MIRROR_DIR environment variable must be set}'
: '${S3_BUCKET:?S3_BUCKET environment variable must be set}'

python3 mirror_models.py


aws s3 sync '$MIRROR_DIR' '$S3_BUCKET' \
    --storage-class STANDARD \
    --no-progress

echo 'All mirrors synced to ${S3_BUCKET}'

Шаг 2: Абстрагируйте слой инференса

Вместо того чтобы привязывать код приложения напрямую к InferenceClient Hugging Face, команды должны ввести тонкую обертку, которая выбирает поставщика инференса на основе переменной среды. Этот шаблон позволяет переключать поставщиков без изменения логики приложения.

⚠ Важно: Каждый поставщик возвращает различную схему ответа. Конечная точка text_classification Hugging Face возвращает [{'label': ..., 'score': ...}], в то время как SageMaker и Ollama возвращают свои собственные форматы. Вызывающие стороны должны обрабатывать специфичные для поставщика структуры ответов, или обертка должна нормализовать ответы к общей схеме.

Установка INFERENCE_PROVIDER=sagemaker в среде развертывания перенаправляет все вызовы инференса без изменения кода приложения. Это основной шаблон резервного копирования.
import os
import json
import logging
from enum import Enum

logger = logging.getLogger(__name__)


class Provider(str, Enum):
    HUGGINGFACE = 'huggingface'
    SAGEMAKER = 'sagemaker'
    OLLAMA = 'ollama'


_hf_client = None
_sagemaker_client = None

_OLLAMA_TIMEOUT_SECONDS = int(os.environ.get('OLLAMA_TIMEOUT', '30'))
_AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1')


def _get_hf_client():
    global _hf_client
    if _hf_client is None:
        from huggingface_hub import InferenceClient
        _hf_client = InferenceClient(token=os.environ.get('HF_TOKEN'))
    return _hf_client


def _get_sagemaker_client():
    global _sagemaker_client
    if _sagemaker_client is None:
        import boto3
        _sagemaker_client = boto3.client(
            'sagemaker-runtime',
            region_name=_AWS_REGION,
        )
    return _sagemaker_client


def get_inference(model_id: str, inputs: str) -> list | dict:
    '''
    Routes an inference request to the configured provider.

    Returns:
        HuggingFace: list[dict] with 'label' and 'score' keys.
        SageMaker:   dict — structure is endpoint-specific.
        Ollama:      dict with 'provider', 'raw', and 'text' keys.

    Raises:
        ValueError:  If INFERENCE_PROVIDER is not a recognized value.
        EnvironmentError: If required env vars are missing.
    '''
    if not model_id or not isinstance(model_id, str):
        raise ValueError('model_id must be a non-empty string.')
    if not inputs or not isinstance(inputs, str):
        raise ValueError('inputs must be a non-empty string.')

    raw_provider = os.environ.get('INFERENCE_PROVIDER', Provider.HUGGINGFACE)
    try:
        provider = Provider(raw_provider)
    except ValueError:
        valid = [p.value for p in Provider]
        logger.error(
            'Unknown INFERENCE_PROVIDER=%r. Valid values: %s',
            raw_provider, valid,
        )
        raise ValueError(
            f'Unknown provider {raw_provider!r}. Valid: {valid}'
        )

    logger.info('Routing inference for model=%r via provider=%s', model_id, provider)

    if provider == Provider.HUGGINGFACE:
        client = _get_hf_client()
        return client.text_classification(inputs, model=model_id)

    if provider == Provider.SAGEMAKER:
        import json as _json
        runtime = _get_sagemaker_client()
        response = runtime.invoke_endpoint(
            EndpointName=model_id,
            ContentType='application/json',
            Body=_json.dumps({'inputs': inputs}),
        )
        body = response['Body']
        try:
            return _json.loads(body.read())
        finally:
            body.close()  

    if provider == Provider.OLLAMA:
        import requests
        try:
            resp = requests.post(
                'http://localhost:11434/api/generate',
                json={'model': model_id, 'prompt': inputs},
                timeout=_OLLAMA_TIMEOUT_SECONDS,
            )
            resp.raise_for_status()
        except requests.exceptions.Timeout:
            logger.error('Ollama request timed out after %ds', _OLLAMA_TIMEOUT_SECONDS)
            raise
        except requests.exceptions.RequestException as exc:
            logger.error('Ollama request failed: %s', exc)
            raise
        result = resp.json()
        
        
        return {
            'provider': 'ollama',
            'raw': result,
            'text': result.get('response', ''),
        }

Установка INFERENCE_PROVIDER=sagemaker в среде развертывания перенаправляет все вызовы инференса без изменения кода приложения. Это основной шаблон резервного копирования. Обратите внимание, что ветка Ollama требует, чтобы Ollama был запущен локально на порту 11434 перед выполнением вызовов.

Шаг 3: Зафиксируйте и изолируйте версии SDK

Зафиксируйте huggingface_hub, transformers и tokenizers на конкретных версиях в requirements.txt или pyproject.toml. Незафиксированные зависимости означают, что вышестоящий релиз, будь то по причинам изменения приоритетов после приобретения или обычной рефакторинга, незаметно нарушит сборки. CI-пайплайны должны включать выделенный шаг, который тестирует с зафиксированной версией и отмечает любые внешние ломающие изменения через запланированное задание, которое устанавливает последнюю версию в изолированной среде и запускает набор тестов.

Пример requirements.txt (замените текущими стабильными версиями; проверьте с помощью pip index versions huggingface-hub):

huggingface_hub==0.23.4
transformers==4.41.2
tokenizers==0.19.1

Шаг 4: Оцените переносимость Transformers.js и WebGPU

Для фронтенд-приложений наиболее устойчивой стратегией переносимости является экспорт моделей в формат ONNX — нейтральный формат обмена, поддерживаемый несколькими средами выполнения. ONNX Runtime Web с бэкендом WebGPU может служить прямой заменой, если поддержка Transformers.js или его распространение изменятся. Обратите внимание, что экспорт модели в ONNX (например, с помощью Hugging Face Optimum или инструмента экспорта transformers.onnx) является предварительным условием для пути ONNX Runtime Web и здесь не показан.


import { pipeline } from '@huggingface/transformers';
const hfClassifier = await pipeline(
  'sentiment-analysis',
  'distilbert-base-uncased-finetuned-sst-2-english',
  { device: 'webgpu' }
);
const hfResult = await hfClassifier('This deal changes everything.');


import * as ort from 'onnxruntime-web';
const session = await ort.InferenceSession.create(
  './distilbert-sst2.onnx',
  { executionProviders: ['webgpu'] }
);



Подход Transformers.js обрабатывает токенизацию внутренне. Путь ONNX Runtime Web требует отдельного шага токенизации, что добавляет сложности, но полностью устраняет зависимость от экосистемы JavaScript Hugging Face.

Шаг 5: Документируйте триггеры управления

Планирование миграции неполно без явных пороговых значений для принятия решений. Команды должны определить и задокументировать внутренние триггеры: «Если цена Hugging Face на Inference Endpoints увеличится более чем на 30%, выполнить миграцию на SageMaker в течение двух спринтов». «Если Условия использования изменятся таким образом, что ограничат перераспределение моделей, активировать локальное зеркало и переключить все пайплайны на загрузку моделей из S3 в течение одной недели». Запись этих триггеров, назначение ответственных и их ежеквартальный пересмотр превращают неопределенную обеспокоенность в оперативный план действий.

Что это значит для экосистемы ML с открытым исходным кодом

Риск концентрации в инфраструктуре моделей

Сделка NVIDIA с Hugging Face, если она будет завершена, сконцентрирует значительную часть стека инфраструктуры ML с открытым исходным кодом под одним поставщиком оборудования. Hugging Face размещает более одного миллиона общедоступных репозиториев моделей и стал точкой распространения по умолчанию для моделей с открытыми весами. Это параллельно более ранним моделям концентрации: npm стал единственным реестром для JavaScript, Docker Hub стал источником образов контейнеров по умолчанию. В обоих случаях сообщества в конечном итоге разработали зеркала, альтернативные реестры и организационные политики для снижения риска единой точки отказа, но только после пережитых сбоев.

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

Hugging Face размещает более одного миллиона общедоступных репозиториев моделей и стал точкой распространения по умолчанию для моделей с открытыми весами.

Сценарии «серебряной подкладки»

Капитал и инженерные ресурсы NVIDIA могут конкретно ускорить инфраструктуру Hugging Face, например, заменив серверную часть Hub, ограниченную CPU, инференсом на базе TensorRT на краю CDN. Бэкенды хранения и обслуживания Hugging Face могут выиграть от стеков Magnum IO и GPUDirect Storage от NVIDIA. Обслуживание, оптимизированное под GPU, уже являющееся фокусом обеих компаний, может увидеть более тесную интеграцию. Регуляторные условия, связанные с одобрением, могут потребовать продолжения открытого доступа к общедоступным репозиториям Hub, предоставляя структурные гарантии, которые не могут предоставить добровольные корпоративные обязательства.

Краткое изложение контрольного списка и следующие шаги

  1. Запустите скрипт обнаружения зависимостей, чтобы сгенерировать JSON-манифест всех активов организации на Hub (установите HF_TOKEN для частных репозиториев).
  2. Заполните рабочий лист аудита зависимостей для каждого из пяти уровней.
  3. Зеркалируйте все производственно-критические репозитории моделей в облачное хранилище сегодня (сначала рассмотрите влияние затрат на хранение).
  4. Зафиксируйте huggingface_hub, transformers и tokenizers на конкретных версиях во всех конфигурациях сборки.
  5. Внедрите абстракцию инференса на основе переменной среды в производственный код обслуживания (с учетом специфичных для поставщика схем ответов).
  6. Экспортируйте фронтенд-модели в ONNX и проверьте ONNX Runtime Web как резервную среду выполнения.
  7. Заполните матрицу альтернативных поставщиков примечаниями о совместимости, специфичными для организации, затем определите и задокументируйте триггеры управления с конкретными пороговыми значениями и сроками реагирования.
  8. Запланируйте ежеквартальный пересмотр рабочего листа аудита и матрицы альтернативных поставщиков.
  9. Не мигрируйте преждевременно. Проведите аудит и подготовьтесь; выполняйте только при наличии конкретного триггера.

Представленные выше рабочий лист и матрица альтернативных поставщиков предназначены для прямого копирования и вставки в документацию команды. Добавьте этот контрольный список в закладки и вернитесь к нему, когда заявленная сделка NVIDIA с Hugging Face достигнет окончательного исхода.