Zhipu AI выпускает «Glyph»: фреймворк ИИ для масштабирования длины контекста через визуально-текстовое сжатие

Команда исследователей из Zhipu AI выпустила Glyph — фреймворк искусственного интеллекта для масштабирования длины контекста с помощью визуально-текстового сжатия. Система преобразует длинные текстовые последовательности в изображения, а затем обрабатывает их с помощью моделей зрения и языка (VLM).

Каждый визуальный токен кодирует множество символов, поэтому эффективная последовательность токенов сокращается, при этом семантика сохраняется. Glyph может обеспечить сжатие токенов в 3–4 раза для длинных текстовых последовательностей без снижения производительности, что позволяет значительно повысить эффективность использования памяти, пропускную способность при обучении и скорость вывода.

Почему Glyph?

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

Дизайн системы и обучение

Метод имеет три этапа: непрерывное предварительное обучение, рендеринг поиска с помощью LLM и постобработка. Непрерывное предварительное обучение знакомит VLM с большими корпусами визуализированных длинных текстов с разнообразной типографикой и стилями. Цель состоит в том, чтобы согласовать визуальные и текстовые представления и перенести навыки работы с длинным контекстом с текстовых токенов на визуальные.

Результаты, производительность и эффективность

Glyph достигает среднего коэффициента сжатия около 3,3 на LongBench, с некоторыми задачами около 5, и около 3,0 на MRCR. Эти показатели масштабируются с увеличением длины входных данных, поскольку каждый визуальный токен несёт больше символов. Сообщается об ускорении работы по сравнению с текстовой основой при входных данных 128K примерно в 4,8 раза для предварительного заполнения, примерно в 4,4 раза для декодирования и примерно в 2 раза для повышения производительности при тонкой настройке с помощью супервизора.

Знакомство с библиотекой Pyversity

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

Почему требуется диверсификация?

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

Различные стратегии диверсификации

Pyversity предлагает чёткий унифицированный API для нескольких популярных стратегий диверсификации, включая максимальную маргинальную релевантность (MMR), максимальную сумму диверсификации (MSD), детерминантные точечные процессы (DPP) и Cover. Его единственная зависимость — NumPy, что делает его очень лёгким.

Создание полностью интерактивной, визуализации данных в реальном времени с помощью Bokeh и Custom JavaScript

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

Установка зависимостей

«`pip install openai numpy pyversity scikit-learn«`

Загрузка ключа API OpenAI

«`
import os
from openai import OpenAI
from getpass import getpass
os.environ[‘OPENAIAPIKEY’] = getpass(‘Enter OpenAI API Key: ‘)
client = OpenAI()
«`

Создание набора данных для тестирования

«`
import numpy as np

search_results = [
«The Golden Retriever is the perfect family companion, known for its loyalty and gentle nature.»,
«A Labrador Retriever is highly intelligent, eager to please, and makes an excellent companion for active families.»,
«Golden Retrievers are highly intelligent and trainable, making them ideal for first-time owners.»,
«The highly loyal Labrador is consistently ranked number one for US family pets due to its stable temperament.»,
«Loyalty and patience define the Golden Retriever, one of the top family dogs globally and easily trainable.»,
«For a smart, stable, and affectionate family dog, the Labrador is an excellent choice, known for its eagerness to please.»,
«German Shepherds are famous for their unwavering loyalty and are highly intelligent working dogs, excelling in obedience.»,
«A highly trainable and loyal companion, the German Shepherd excels in family protection roles and service work.»,
«The Standard Poodle is an exceptionally smart, athletic, and surprisingly loyal dog that is also hypoallergenic.»,
«Poodles are known for their high intelligence, often exceeding other breeds in advanced obedience training.»,
«For herding and smarts, the Border Collie is the top choice, recognized as the world’s most intelligent dog breed.»,
«The Dachshund is a small, playful dog with a distinctive long body, originally bred in Germany for badger hunting.»,
«French Bulldogs are small, low-energy city dogs, known for their easy-going temperament and comical bat ears.»,
«Siberian Huskies are energetic, friendly, and need significant cold weather exercise due to their running history.»,
«The Beagle is a gentle, curious hound known for its excellent sense of smell and a distinctive baying bark.»,
«The Great Dane is a very large, gentle giant breed; despite its size, it’s known to be a low-energy house dog.»,
«The Australian Shepherd (Aussie) is a medium-sized herding dog, prized for its beautiful coat and sharp intellect.»
]
«`

Создание эмбедингов

«`
def get_embeddings(texts):
«»»Fetches embeddings from the OpenAI API.»»»
print(«Fetching embeddings from OpenAI…»)
response = client.embeddings.create(
model=»text-embedding-3-small»,
input=texts
)
return np.array([data.embedding for data in response.data])

embeddings = getembeddings(searchresults)
print(f»Embeddings shape: {embeddings.shape}»)
«`

Ранжирование результатов поиска по релевантности

«`
from sklearn.metrics.pairwise import cosine_similarity

query_text = «Smart and loyal dogs for family»
queryembedding = getembeddings([query_text])[0]

scores = cosinesimilarity(queryembedding.reshape(1, -1), embeddings)[0]

print(«\n— Initial Relevance-Only Ranking (Top 5) —«)
initialrankingindices = np.argsort(scores)[::-1] # Sort descending
for i in initialrankingindices[:5]:
print(f»Score: {scores[i]:.4f} | Result: {search_results[i]}»)
«`

Создание интерактивной информационной панели с помощью Bokeh

«`
import numpy as np
import pandas as pd
from bokeh.io import outputnotebook, show, exportpng, output_file
from bokeh.plotting import figure
from bokeh.layouts import row, column, gridplot
from bokeh.models import (
ColumnDataSource, HoverTool, LassoSelectTool, BoxSelectTool, TapTool,
ColorBar, LinearColorMapper, BasicTicker, PrintfTickFormatter, Slider,
Select, CheckboxGroup, CustomJS, CDSView, BooleanFilter, Div, Button
)
from bokeh.palettes import Viridis256
from bokeh.models.widgets import DataTable, TableColumn

output_notebook()

np.random.seed(42)
N = 300
data = pd.DataFrame({
«temp_c»: 20 + 5 * np.random.randn(N),
«pressure_kpa»: 101 + 3 * np.random.randn(N),
«humidity_pct»: 40 + 15 * np.random.randn(N),
«sensor_id»: np.random.choice([«A1″,»A2″,»B7″,»C3»], size=N),
«timestep»: np.arange(N)
})

source_main = ColumnDataSource(data)

p_scatter = figure(title=»Temperature vs Pressure», width=400, height=300,
xaxislabel=»Temperature (°C)», yaxislabel=»Pressure (kPa)»,
tools=»pan,wheel_zoom,reset»)

scat = pscatter.circle(x=»tempc», y=»pressurekpa», size=8, fillalpha=0.6,
fillcolor=»orange», linecolor=»black», source=source_main,
legend_label=»Sensor Readings»)

hover = HoverTool(tooltips=[
(«Temp (°C)», «@tempc{0.0}»), («Pressure», «@pressurekpa{0.0} kPa»),
(«Humidity», «@humiditypct{0.0}%»), («Sensor», «@sensorid»),
(«Timestep», «@timestep»)], renderers=[scat])
pscatter.addtools(hover)
pscatter.legend.location = «topleft»
show(p_scatter)
«`

1. Какие преимущества предлагает фреймворк Glyph для обработки длинных текстовых последовательностей?

Ответ: Glyph — это фреймворк искусственного интеллекта, который преобразует длинные текстовые последовательности в изображения для последующей обработки с помощью моделей зрения и языка (VLM). Это позволяет сократить эффективную последовательность токенов в 3–4 раза без снижения производительности, что повышает эффективность использования памяти, пропускную способность при обучении и скорость вывода.

2. Какие этапы включает в себя метод работы Glyph?

Ответ: Метод работы Glyph включает три этапа: непрерывное предварительное обучение, рендеринг поиска с помощью LLM и постобработка. Непрерывное предварительное обучение знакомит VLM с большими корпусами визуализированных длинных текстов, чтобы согласовать визуальные и текстовые представления и перенести навыки работы с длинным контекстом с текстовых токенов на визуальные.

3. Какие стратегии диверсификации предлагает библиотека Pyversity для улучшения результатов поисковых систем?

Ответ: Pyversity предлагает чёткий унифицированный API для нескольких популярных стратегий диверсификации, включая максимальную маргинальную релевантность (MMR), максимальную сумму диверсификации (MSD), детерминантные точечные процессы (DPP) и Cover.

4. Какие инструменты и библиотеки используются для создания интерактивной информационной панели визуализации данных в реальном времени?

Ответ: Для создания интерактивной информационной панели визуализации данных в реальном времени используются инструменты и библиотеки, такие как Bokeh и Custom JavaScript. Bokeh — это библиотека Python, предназначенная для создания интерактивных визуализаций данных.

5. Какие шаги включает в себя процесс создания эмбедингов для ранжирования результатов поиска по релевантности?

Ответ: Процесс создания эмбедингов для ранжирования результатов поиска по релевантности включает в себя следующие шаги:
* получение эмбедингов из OpenAI API с помощью функции `get_embeddings`;
* расчёт косинусного сходства между запросом и каждым из результатов поиска;
* ранжирование результатов поиска по релевантности на основе рассчитанных значений косинусного сходства.

Источник