newsmode
search
Меню
arrow_back Назад

Curating LLM data – Hamel’s Blog - Hamel Husain

auto_awesomeКраткое саммари

Hamel Husain рассказывает, почему стоит создавать собственные инструменты для разметки и курирования данных при работе с LLM, а не полагаться на готовые вендорские решения. Он перепробовал Spacy Prodigy, Argilla и Lilac, но столкнулся с ограничениями: либо сложно адаптировать под конкретные задачи, либо не хватает базовых функций сортировки и фильтрации. Автор подчёркивает, что великие AI-исследователи (как Andrej Karpathy с ImageNet) лично смотрят на данные и строят инфраструктуру для быстрой ручной инспекции. После сравнения Gradio, Panel, Streamlit и Shiny For Python он выбрал последний за нативную интеграцию с Quarto, реактивную модель, компактный API и поддержку WASM. По его опыту, приложения на Shiny требуют меньше кода и понятнее, чем альтернативы.

TLDR

TLDR

I think many people should build their own data annotation/curation tools for LLMs. The benefits far outweigh costs in many situations, especially when using general-purpose front-end frameworks. It’s too critical of a task to outsource without careful consideration. Furthermore, you don’t want to get constrained by the limitations of a vendor’s tool early on.

Я считаю, что многим стоит создавать собственные инструменты для разметки и курирования данных для LLM. Во многих ситуациях выгоды значительно перевешивают затраты, особенно при использовании универсальных фронтенд-фреймворков. Эта задача слишком критична, чтобы отдавать её на аутсорс без тщательного обдумывания. Кроме того, не стоит на раннем этапе оказываться в плену ограничений вендорского инструмента.

I recommend using Shiny For Python for reasons discussed here. I wouldn’t recommend Streamlit for reasons discussed here.

Я рекомендую Shiny For Python по причинам, обсуждаемым здесь. Я бы не рекомендовал Streamlit по причинам, обсуждаемым здесь.

Background

Предыстория

One pattern I noticed is that great AI researchers are willing to manually inspect lots of data. And more than that, they build infrastructure that allows them to manually inspect data quickly. Though not glamorous, manually examining data gives valuable intuitions about the problem. The canonical example here is Andrej Karpathy doing the ImageNet 2000-way classification task himself.

Jason Wei, AI Researcher at OpenAI

Один паттерн, который я заметил: великие AI-исследователи готовы вручную изучать массу данных. И более того, они строят инфраструктуру, которая позволяет им быстро инспектировать данные вручную. Хотя это и не выглядит престижно, ручное изучение данных даёт ценные интуиции о задаче. Канонический пример — Andrej Karpathy, который сам выполнял задачу 2000-классовой классификации на ImageNet. — Jason Wei, AI-исследователь в OpenAI

I couldn’t agree with Jason more. I don’t think people look at their data enough. Building your own tools so you can quickly sort through and curate your data is one of the highest-impact activities you can do when working with LLMs. Looking at and curating your own data is critical for both evaluation and fine-tuning.

Я полностью согласен с Jason. Думаю, люди недостаточно смотрят на свои данные. Создание собственных инструментов, позволяющих быстро сортировать и курировать данные, — одно из самых высокоэффективных занятий при работе с LLM. Изучение и курирование собственных данных критично как для оценки, так и для дообучения.

Things I tried

Что я пробовал

At the outset, I tried to avoid building something myself. I tried the following vendors who provide tools for data curation/review:

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

Vendors

Вендоры

These tools are at varying levels of maturity. I interacted with the developers on all these products, and they were super responsive, kind and aware of these limitations. I expect that these tools will improve significantly over time.

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

  • Spacy Prodigy: This was my favorite “pre-packaged” tool/framework. They have the cleanest UI. However, I found it a bit difficult to quickly hack it for my specific needs. They have excellent features for lots of different NLP tasks. In the end, I ended up drawing inspiration from their UI and building my own tool.
  • Argilla: This platform has lots of functionality, however the LLM functionality fell short for me. I couldn’t do simple things like sorting, filtering, and labeling. Their LLM vs non-LLM functionality has very different APIs, which makes things quite fragmented at the moment. I think it could have potential once it matures.
  • Lilac: I found that this was more of a dataset viewer rather than something that allowed me to label data and curate it. So it didn’t really fit my needs. The user interface did not seem that hackable/extendable.
  • Spacy Prodigy: Это был мой любимый «готовый» инструмент/фреймворк. У них самый чистый UI. Однако мне было довольно сложно быстро адаптировать его под мои конкретные нужды. У них отличные возможности для множества разных NLP-задач. В итоге я вдохновился их UI и построил свой собственный инструмент. Argilla: У этой платформы много функциональности, однако LLM-функциональность меня не устроила. Я не мог делать простых вещей вроде сортировки, фильтрации и разметки. Их LLM- и не-LLM-функциональность имеют очень разные API, что на данный момент делает всё довольно фрагментарным. Думаю, у платформы есть потенциал, когда она дозреет. Lilac: Я обнаружил, что это скорее просмотрщик датасетов, чем инструмент, позволяющий размечать и курировать данные. Поэтому он не подошёл под мои нужды. Пользовательский интерфейс не показался мне особенно хакабельным/расширяемым.

    One thing that became clear to me while trying these vendors is the importance of being able to hack these tools to fit your specific needs. Every company you work with will have an idiosyncratic tech stack and tools that you might want to integrate into this data annotation tool. This led me to build my own tools using general-purpose frameworks.

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

    General Purpose Frameworks

    Универсальные фреймворки

    Python has really great front-end frameworks that are easy to use like Gradio or Panel and Streamlit. There is a new kid on the block, Shiny For Python, was my favorite after evaluating all of them.

    В Python есть действительно отличные фронтенд-фреймворки, которыми легко пользоваться, например Gradio, Panel и Streamlit. Появился новичок — Shiny For Python, и после оценки всех вариантов он стал моим фаворитом.

    Reasons I liked Shiny the most:

    Причины, по которым Shiny понравился мне больше всего:

  • Native integration with Quarto.
  • A powerful reactive model that is snappy.
  • A small API that is easy to learn and keep in your head.
  • Amazing WASM support, for example I have embedded a version of the app in this blog post!
  • Нативная интеграция с Quarto. Мощная и шустрая реактивная модель. Небольшой API, который легко выучить и держать в голове. Потрясающая поддержка WASM — например, я встроил версию приложения прямо в этот блог-пост!

    I found that Shiny apps always required much less code and were easier to understand than the other frameworks.

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