Узнайте, как векторы задач позволяют эффективно объединять модели и управлять их поведением. Узнайте, как манипулировать весами Ultralytics для многозадачности без предварительного обучения.
Векторы задач отражают конкретные изменения, внесенные в веса нейронной сети в процессе тонкой настройки для достижения новой способности. Вычитая параметры базовой модели из параметров отлаженной модели, исследователи могут выделить вектор направления в пространстве весов, который отражает выученное поведение для данной конкретной задачи. Этот подход позволяет разработчикам применять простые арифметические операции над параметрами модели для управления, изменения или объединения поведений модели без необходимости дополнительных вычислений при обучении.
В то время как концепция переноса обучения предполагает последовательное обучение модели на новом наборе данных с целью адаптации имеющихся знаний, векторы задач воздействуют непосредственно на структурные веса модели после завершения обучения. Вместо переобучения градиентов для освоения новой области, интерполяция весового пространства с использованием векторов задач позволяет специалистам линейно комбинировать различия весов из нескольких независимо обученных моделей. Это обеспечивает слияние моделей без предварительного обучения (zero-shot), позволяя одной модели унаследовать несколько возможностей одновременно без типичных вычислительных затрат во время обучения.
Возможность алгебраической обработки моделей глубокого обучения привела к появлению ряда значимых приложений в современных конвейерах искусственного интеллекта:
Для создания и применения вектора задачи необходимо получить доступ к словарюPyTorch и выполнить с ним определенные операции. В следующем примере показано, как извлечь вектор задачи из настроенной модели YOLO26 и применить его обратно к базовой модели с использованием определенного коэффициента масштабирования.
from ultralytics import YOLO
# Load the state dictionaries for the base and fine-tuned models
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calculate the task vector (tuned weights minus base weights)
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights.keys()}
# Apply the task vector to the base model using a 0.5 scaling factor
for k in base_weights.keys():
base_weights[k] += 0.5 * task_vector[k]
По мере того как архитектуры, такие как крупные языковые модели и массивные трансформеры для обработки изображений, наращивают количество параметров, их переобучение при каждой незначительной корректировке становится экономически нецелесообразным. Векторы задач задач предоставляют математически элегантную альтернативу для оптимизации моделей после обучения. Благодаря совместному использованию объемных векторов задач вместо целых моделей размером в несколько гигабайт сообщество ИИ может ускорить сотрудничество в сфере ИИ на основе открытого исходного кода. Как только ваши настраиваемые векторы задач будут доработаны, использование Ultralytics упрощает последующие процессы развертывания и мониторинга моделей, гарантируя, что ваши оптимизированные веса напрямую преобразуются в готовые к производству конечные точки.
Начните свой путь в будущее машинного обучения