Перейти к основному содержимому

Не места, а представления признаков: учёт биллинга потребляемых кредитов Tecton как COGS по ASC 606 для ML-платформы

Опубликовано 12 мин чтенияMike ThriftMike Thrift
Не места, а представления признаков: учёт биллинга потребляемых кредитов Tecton как COGS по ASC 606 для ML-платформы
Содержание страницы

В вашем счёте от Tecton стоит одна цифра, ваш счёт AWS тихо несёт остальное, и ни один из документов не называет себя полной стоимостью обслуживания признаков. В этом разрыве и заключается ловушка. Tecton устанавливает цену по потреблению — вычислительные кредиты за конвейеры, которые он запускает, плюс облачные ресурсы, которые эти конвейеры потребляют внутри вашего собственного аккаунта — поэтому счёт, который вы получаете от Tecton, всегда лишь часть расходов. Если ваша бухгалтерия фиксирует счёт и на этом останавливается, ваша себестоимость проданных товаров занижена, ваша валовая маржа завышена, и каждое ценовое решение, которое вы принимаете на основе этой маржи, опирается на число, которое никогда не было полным.

В этой статье объясняется, как Tecton на самом деле измеряет и выставляет счета, почему продакшн-обслуживание признаков относится к себестоимости проданных товаров, как обращаться с предоплаченными кредитами и обязательствами по потреблению и как сверять всё это на конец месяца, чтобы каждый доллар попал на правильный счёт.

Как Tecton измеряет: представления признаков, а не места​

Tecton — это управляемая платформа признаков для машинного обучения. Вы определяете преобразования над вашими данными как представления признаков, Tecton вычисляет их на пакетных или потоковых конвейерах и передаёт результаты вашим моделям — офлайн-хранилище для извлечения при обучении в большом масштабе и онлайн-хранилище для извлечения с низкой задержкой во время живого вывода. Лицензий на места, которые нужно считать, нет. Вы платите за то, что платформа потребляет при вычислении, хранении и обслуживании ваших признаков.

Это потребление делится на две корзины, которые выставляются в двух разных местах, — и это первое, что нужно усвоить.

Первая корзина — кредиты Tecton. Они покрывают вычисления, которыми Tecton управляет от вашего имени: кредиты на потоковые вычисления Spark для потоковых представлений признаков, кредиты на пакетные вычисления Spark для пакетных представлений признаков. Ваше использование платформы переводится в кредиты, и кредиты появляются в счёте Tecton.

Вторая корзина — сама инфраструктура, и она выставляется через ваш собственный облачный аккаунт. Tecton управляет вычислительными ресурсами и ресурсами хранения внутри вашей среды AWS или GCP, поэтому чтения и записи онлайн-хранилища, вычисления кластеров Spark, хранение онлайн-хранилища и хранение S3 — всё это попадает в ваш облачный счёт, а не в счёт Tecton. Команда, которая выделяет ресурсы через один канал, а сверяет через другой, всегда будет находить разрыв. Решите раз и навсегда, что истинная стоимость представления признаков — это сумма обеих корзин, и убедитесь, что ваша выборка на конец месяца охватывает и счёт Tecton, и помеченные строки облачного счёта.

Потоковые и пакетные представления признаков потребляют по-разному​

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

Потоковые представления признаков несут чтения и записи онлайн-хранилища, вычисления потокового кластера Spark, кредиты на потоковые вычисления Tecton Spark, хранение S3 и хранение онлайн-хранилища. Пакетные представления признаков несут похожий список — чтения и записи онлайн-хранилища, вычисления кластера заданий Spark, кредиты на пакетные вычисления Tecton Spark и хранение S3 — минус компоненты, специфичные для потоковой обработки.

Параметры, которые двигают счёт, — это проектные решения, которые ваши ML-инженеры принимают каждый день. Непрерывная потоковая обработка выполняет контрольные точки и записи гораздо чаще, чем обработка по интервалам, поэтому стоит дороже. Более крупные окна агрегации требуют больше вычислений. Более длинные водяные знаки для поздно приходящих данных повышают требования к памяти. Конфигурация кластера напрямую определяет цену каждого задания. Уплотнение данных снижает стоимость хранения и повышает производительность чтения. Ничто из этого не является финансовой настройкой; это инженерные настройки с финансовыми последствиями, поэтому учёт для этой платформы начинается с разговора между двумя командами о том, какие представления признаков существуют и на что они настроены.

Иерархия затрат показывает, куда уходят деньги​

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

Операции онлайн-хранилища стоят на первом месте. Записи в онлайн-хранилище, как правило, являются самой высокой инфраструктурной стоимостью, особенно во время бэкфиллов — пересчёта исторических признаков для нового или изменённого представления признаков — или при непрерывной потоковой обработке. Бэкфилл — это запланированный всплеск: дни или недели исторических вычислений и поток записей, сжатые в одно окно. Если никто не предупредит финансы о его приближении, месяц, в который он приходится, выглядит как перерасход, а не как инвестиция.

Вычислительные ресурсы на втором месте: затраты кластеров Spark для потоковой и пакетной обработки, варьирующиеся в зависимости от конфигурации и рабочей нагрузки. Хранение на третьем месте: хранение и чтения онлайн-хранилища плюс S3, как правило, с меньшим влиянием, чем вычисления и записи.

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

Почему продакшн-обслуживание признаков — это COGS​

Согласно US GAAP, себестоимость проданных товаров SaaS-компании — стоимость выручки — включает прямые затраты на предоставление услуги, за которую платят клиенты: инфраструктуру хостинга, облачные вычисления и хранение, стороннее программное обеспечение, встроенное в продукт, и всё остальное, что масштабируется с использованием. Обслуживание признаков для продакшн-ML-продукта легко проходит эту планку. Когда ваша модель борьбы с мошенничеством оценивает транзакцию, ваша рекомендательная система ранжирует ленту или ваша модель ценообразования выставляет ставку, чтения онлайн-хранилища и конвейеры, поддерживающие свежесть этих признаков, являются настолько же прямой стоимостью предоставления, как и серверы приложений за ними.

Эта классификация важна, потому что она напрямую влияет на валовую маржу — число, которое инвесторы, кредиторы и покупатели используют, чтобы судить, работают ли экономические показатели вашего продукта. Отнесение затрат на обслуживание ниже черты в общие операционные расходы завышает валовую маржу и скрывает историю масштабирования. Команда Due Diligence всё равно переведёт ваш главный журнал в стандартное определение COGS для SaaS; правильная классификация с самого начала означает, что ваши собственные панели показывают ту же историю, которую вычислит сторонний наблюдатель.

Однако не каждый доллар Tecton относится к COGS. Разделение следует за использованием, а не за поставщиком:

  • Продакшн-обслуживание — это COGS. Чтения и записи онлайн-хранилища для живого вывода, потоковые и пакетные конвейеры, поддерживающие свежесть продакшн-признаков, и хранение за ними — всё это предоставляет клиентскую услугу.
  • Экспериментирование и staging — это операционные расходы. Разработческие представления признаков, офлайн-экспериментирование и staging-среды поддерживают исследования и разработку, а не предоставление услуг. Относите их на R&D.
  • Работа только для обучения требует суждения. Офлайн-вычисление признаков, которое существует исключительно для обучения следующей версии модели, больше похоже на R&D, чем на предоставление услуг; тот же конвейер, питающий онлайн-хранилище для живого обслуживания, — это COGS. Когда одно представление признаков делает и то и другое, распределяйте по обоснованному драйверу — помеченные облачные расходы по средам — самый чистый из тех, что есть у большинства команд.

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

Покупка Tecton — это расход; создание эквивалента может быть капиталом​

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

Ни один из вариантов не является необязательным украшением. Если вы используете Tecton, не капитализируйте его счета так, как будто вы построили платформу. Если вы переходите с самостоятельно построенного хранилища на Tecton, старый капитализированный актив продолжает амортизироваться, пока новое потребление попадает в COGS — две разные строки, две разные истории, обе верны одновременно.

Предоплаченные кредиты и обязательства — сначала активы, потом расходы​

Платформы с оплатой по потреблению обычно продают предоплаченные кредиты или годовые обязательства по расходам, и учёт обоих следует принципу соответствия: записывайте платёж как актив, затем списывайте его в расходы по мере потребления выгоды. Доллар, переведённый поставщику авансом, ещё не является стоимостью чего-либо. Он становится COGS, когда кредиты сгорают на продакшн-обслуживании, R&D, когда они сгорают на экспериментировании, и убытком, если они истекают неиспользованными.

На практике это означает три проводки, а не одну. Когда вы покупаете кредиты, дебетуйте предоплаченный актив и кредитуйте денежные средства. Каждый месяц уменьшайте остаток на то, что было фактически потреблено — потребление в продакшне на COGS, потребление в staging на R&D. Если кредиты имеют дату истечения, внесите её в календарь; истёкший остаток — это реальный убыток, который заслуживает запланированного списания, а не обнаружения во время следующей годовой уборки.

Минимумы «бери или плати» добавляют начисление сверху. Если ваш договор обязывает вас к минимальному квартальному расходу, вы должны большее из фактического потребления и минимума. Когда потребление ближе к концу периода опускается ниже обязательства, начислите недостачу, которую вы всё равно будете должны. Счёт придёт позже, но обязательство существует на дату баланса, и закрытие должно его отражать.

Сверка на конец месяца: два счёта, одна истина​

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

Рабочий контрольный список закрытия выглядит так:

  1. Выгрузите журналы использования за полный месяц. Убедитесь, что кредиты каждого продакшн-представления признаков и кредиты каждого эксперимента присутствуют, включая последние два дня — задержка журнала означает, что закрытие, запущенное первого числа месяца, лишено данных. Либо дождитесь журналов, либо начислите последние дни по текущему темпу и скорректируйте в следующем месяце.
  2. Начислите невыставленную сторону Tecton. Как и большинство биллинга по потреблению, счёт приходит после периода, который он покрывает. Запишите начисление за оценочные кредиты месяца на COGS и R&D с разделением по средам, затем сторнируйте и скорректируйте, когда придёт счёт.
  3. Выгрузите помеченные облачные расходы. Отфильтруйте ваш обозреватель облачных затрат по тегам представлений признаков за тот же период. Это вторая корзина — кластеры Spark, операции онлайн-хранилища, хранение — и её нужно разделить на продакшн и staging тем же способом.
  4. Сверьте журналы со счётом и облачным счётом. Журналы использования должны сходиться со счётом Tecton; помеченные облачные строки должны двигаться в том же направлении. Месяц с бэкфиллом даст всплеск в обоих. Счёт, расходящийся с журналами, — это вопрос к биллингу, который нужно поднять сейчас, а не при продлении.
  5. Уменьшите предоплаты и обязательства. Спишите потреблённые кредиты из предоплаченного актива, начислите любую недостачу по обязательству и убедитесь, что оставшиеся остатки всё ещё выглядят пригодными к использованию до истечения.

Самая частая ошибка — шаг третий: тщательная сверка счёта Tecton, пока облачные расходы прячутся внутри более крупного инфраструктурного счёта под общим хостингом. Если в вашей облачной выписке одна объединённая строка вычислений, наладьте тегирование прежде, чем что-либо ещё. Непомеченные расходы невозможно распределить, а нераспределённые расходы всегда оказываются где-то не там.

Конкретный месяц в бухгалтерии​

Предположим, ваша ML-платформа сжигает кредиты Tecton, выставленные на $40 000 за продакшн-обслуживание и $8 000 за экспериментирование в январе, плюс $12 000 помеченных облачных расходов, разделённых на $9 500 продакшн и $2 500 staging. Вы также предоплатили $100 000 кредитов в начале квартала. Январь в бухгалтерии выглядит так:

2026-01-01 open Assets:Cash:Operating USD
2026-01-01 open Assets:Prepaid:Tecton-Credits USD
2026-01-01 open Expenses:CostOfSales:Feature-Serving USD
2026-01-01 open Expenses:Research:ML-Experimentation USD
2026-01-01 open Liabilities:Accrued:Tecton USD
2026-01-01 open Liabilities:Accrued:Cloud USD
 
2026-01-05 * "Tecton" "Prepay Q1 consumption credits"
  Assets:Prepaid:Tecton-Credits  100000.00 USD
  Assets:Cash:Operating  -100000.00 USD
 
2026-01-31 * "Tecton" "January credit consumption, prod serving plus experimentation"
  Expenses:CostOfSales:Feature-Serving  40000.00 USD
  Expenses:Research:ML-Experimentation  8000.00 USD
  Assets:Prepaid:Tecton-Credits  -48000.00 USD
 
2026-01-31 * "Cloud" "January tagged feature-platform infra, prod plus staging"
  Expenses:CostOfSales:Feature-Serving  9500.00 USD
  Expenses:Research:ML-Experimentation  2500.00 USD
  Liabilities:Accrued:Cloud  -12000.00 USD

Схема обобщается: предоплата — это актив, потребление переносит его в расходы по средам, а облачная сторона начисляется отдельно, потому что выставляется отдельно. Если ваша команда ведёт бухгалтерию в простом тексте, шаблоны отслеживания затрат в документации естественно расширяются до разделения по каждому представлению признаков, а представления панели делают тренд продакшн-против-staging видимым месяц за месяцем.

Ошибки, которые искажают маржу​

Четыре ошибки повторяются на командах, использующих ML-инфраструктуру с оплатой по потреблению. Каждую дёшево предотвратить и дорого исправить в масштабе пересчитанных периодов.

Запись счёта Tecton как всей стоимости. Счёт — это одна корзина. Каждый месяц облачные вычисления, операции онлайн-хранилища и хранение добавляют вторую корзину сопоставимого размера, и её пропуск занижает COGS примерно наполовину. Сверяйте обе или не отчитывайтесь ни об одной.

Списание предоплат в момент оплаты. Покупка кредитов на $100 000 — это не расход $100 000 в месяц, когда уходит платёж. Это актив, который превращается в расход по мере сгорания кредитов. Списание в момент оплаты перегружает начало квартала, лишает последующие месяцы их истинной стоимости и делает тренды потребления нечитаемыми.

Проведение staging через COGS. Экспериментальные представления признаков, офлайн-бэкфиллы для исследований моделей и staging-среды — это R&D. Смешивание их с затратами на обслуживание завышает COGS и наказывает валовую маржу за работу, которая никогда не касалась клиента. Теги представлений признаков существуют именно для того, чтобы это разделение оставалось честным, — используйте их.

Пропуск начисления. Счета по потреблению выставляются в конце периода, журналы использования отстают на день-два, а облачный счёт приходит ещё позже. Закрытие без начисления записывает неполный месяц как полный, и недостающие дни всплывают как загадочное отклонение в следующем месяце. Начисляйте по текущему темпу, затем корректируйте, когда приходят документы.

Ваш последний полезный шаг в этом месяце мал: откройте обозреватель облачных затрат, отфильтруйте по тегам представлений признаков и убедитесь, что число, которое вы видите, — это число в вашей бухгалтерии. Если эти два никогда не встречались, вы только что нашли разрыв, ради закрытия которого написана эта статья.

Источник: https://beancount.io/ru/blog/2026/11/11/feature-views-not-seats-tecton-consumption-billing-cogs-guide

Опубликовано: 11 ноября 2026 г.

13 мин чтения

Поминутная тарификация, а не по сообщениям: сверка счетов CloudAMQP за время работы инстансов как инфраструктурная себестоимость

CloudAMQP тарифицирует время работы инстансов по секундам с оплатой в конце…

cost-of-goods-sold
cloud-services
10 мин чтения

Feast против Tecton: капитализация собственной инфраструктуры feature store по ASC 350-40, когда вы создаете, а не покупаете

Создание на базе Feast превращает зарплату инженеров в капитальный актив по ASC…

software-capitalization
saas
12 мин чтения

Исходящий трафик превыше всего: учёт помигабайтной тарификации исходящего трафика NATS в Synadia Cloud как переменных затрат на инфраструктуру в себестоимости

Synadia Cloud тарифицирует клиентский и leaf-исходящий трафик по 9 центов за…

cost-of-goods-sold
cloud-services
11 мин чтения

Правило фрагментации по 64 КБ: как учитывать оплату за запросы AWS SQS/SNS как переменную себестоимость

SQS и SNS тарифицируют каждый фрагмент по 64 КБ за вызов API, поэтому сообщение…

cost-of-goods-sold
cloud-services
12 мин чтения

Ваш счёт за вебхуки — это себестоимость, а не накладные расходы: учёт событийного SaaS на Svix и Hookdeck

Счета Svix и Hookdeck — это себестоимость выручки, а не накладные расходы:…

saas
cost-of-goods-sold