реклама
разместить

Развертывание Marco o1 на локальном PC. Языковая модель рассуждений

Недавно я запускал и тестировал Marco o1. Это одна из первых опенсорсных языковых моделей с многоступенчатой логикой, эта модель использует Chain-of-Thoughts и некоторые другие алгоритмы, которые помогают с решением задач на математику, логику и кодинг. Marco-o1 названа по аналогии с OpenAI o1, благодаря которой Chain-of-Thoughts промптинг и файнтюнинг получил особую популярность в GenAI индустрии.

В последнее время разные компании, в основном из Китая, стремятся повторить возможности o1. Самые впечатляющие результаты - у DeepSeek-R1-Lite-Preview, но веса этой модели не были опубликованы на момент проведения моих тестов. Однако разработчики DeepSeek R1 Lite обещали открыть доступ в свое время, и это будет очень интересно для нас.

А пока я решил поиграть с весами Marco-o1, модели хотя и легковесной, но реализующей те продвинутые алгоритмы, которые стоят за удивительными возможностями оригинальной o1. Как видно из карточки модели на HuggingFace, она создана путем файнтюнинга Qwen 2 7B на Chain-of-Thoughts датасете. Это комбинация датасетов Open-O1 и двух дополнительных наборов данных, которые разработчики из Alibaba Cloud сгенерировали, используя разные стратегии промптинга - Chain of Thoughts и обычные инструкции. Опубликована, к сожалению, только часть данных, но по ним ясно видно, какой формат использовали для файнтюнинга Chain-of-Thoughts:

Развертывание Marco o1 на локальном PC. Языковая модель рассуждений

Сам по себе Chain-of-Thoughts - это формат промпта, который заставляет модель строить цепочки мыслей вроде этой. Но как в случае с моделью Marco, чтобы нейросеть могла эффективно работать с таким форматом, ее нужно файнтюнить на Chain-of-Thoughts датасете. Точно так же Instruct модель требует файнтюнинга на данных с определенной структурой промптов и ответов.

Marco o1 также использует алгоритм поиска по дереву Монте-Карло (MCTS), который, согласно статье разработчиков, позволяет исследовать несколько путей рассуждения, используя показатель достоверности, полученный из логарифмических вероятностей топ-K альтернативных токенов. К этому значению вероятности для каждого токена и к пяти альтернативным значениям применяют функцию softmax и получают показатель достоверности C(i) для i-того токена. Потом вычисляют среднее значение для всех пяти альтернатив. Более высокое среднее значение показывает большую уверенность в том, что выбранный путь рассуждения является более оптимальным.

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

Изображение взято из статьи <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Farxiv.org%2Fpdf%2F2411.14405&postId=1706842" rel="nofollow noreferrer noopener" target="_blank">Marco-o1: Towards Open Reasoning Models for Open-Ended Solutions</a>
Изображение взято из статьи Marco-o1: Towards Open Reasoning Models for Open-Ended Solutions

Дальше есть еще пара интересных идей, например, Action Selection. Чтобы использовать только что описанный алгоритм MCTS, нужно определиться, что использовать в качестве единицы в пространстве решений, или одного шага рассуждения, и для этого разработчики применяли разные подходы - как целый шаг или действие в качестве единицы, так и мини-шаг - 32 или 63 токена.

Наконец, разработчики добавили механизм саморефлексии, в виде промпта в конце каждой цепочки рассуждений, который побуждает модель проверить свои решения: "Подожди, может быть я сделал какие-то ошибки, мне нужно обдумать все сначала". Это позволяет модели критически оценивать собственные рассуждения и находить в них ошибки.

А теперь немного практической части. Веса модели Marco-o1 имеют всего 7 миллиардов параметров. Я запускал ее и локально, и в облаке immers.cloud, в обоих случаях особо мощная видеокарта не требуется, особенно если применять квантизацию. Локально я запустил модель на RTX 4060 c 4-битной квантизацией bitsandbytes.

У меня была идея задеплоить полноценный LLM-server, совместимый с openai или gradio клиентом, и я выбрал два решения:

Первое - Text Generation Inference: на этот сервер уже был обзор на моем YouTube-канале, он высокопроизводительный, поддерживается платформой Huggingface, предлагает квантизацию и другие полезные фичи из коробки.

Запустить TGI локально не проблема, простой и правильный путь - в докере. Иначе придется устанавливать Rust и прочие зависимости, это ни к чему. Команда для запуска:

docker run --gpus all --shm-size 1g -p 8080:80 -v $path_to_volume:/data \ ghcr.io/huggingface/text-generation-inference:2.4.1 --model-id AIDC-AI/Marco-o1 --quantize bitsandbytes-nf4

Докер должен поддерживать GPU, что вообще не проблема на Linux или на Windows с WSL2. Флаг --quantize опциональный - можете выбрать опцию bitsandbytes (по умолчанию 8 бит) или вообще без сжатия, если есть достаточно видеопамяти.

В итоге на 4060 инференс получился очень быстрый. Я использовал следующий код для фронтенда на gradio:

import gradio as gr from huggingface_hub import InferenceClient client = InferenceClient("http://127.0.0.1:8080") def respond( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): messages = [{"role": "system", "content": system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response system_prompt = """You are a well-trained AI assistant, your name is Marco-o1. Created by AI Business of Alibaba International Digital Business Group. ## IMPORTANT!!!!!! When you answer questions, your thinking should be done in <Thought>, and your results should be output in <Output>. <Thought> should be in English as much as possible, but there are 2 exceptions, one is the reference to the original text, and the other is that mathematics should use markdown format, and the output in <Output> needs to follow the language of the user input. """ demo = gr.ChatInterface( respond, additional_inputs=[ gr.Textbox(value=system_prompt, label="System message"), gr.Slider(minimum=1, maximum=2048, value=1, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)", ), ], ) if __name__ == "__main__": demo.launch()

Однако я столкнулся с одной проблемой - системный промпт. Он взят из ollama, которая с таким промптом прекрасно работает. А вот TGI выдает ошибку, когда промпт превышает определенную длину. Так что для тех, кто не хочет возиться, предпочтительнее будет ollama, с ней все просто:

ollama pull marco-o1 ollama serve

А о том, как запустить ollama как сервис, чтобы создать таким образом свой LLM-сервер, я расскажу в следующей статье.

Если вы занимаетесь рендерингом, ИИ или просто любите играть, подписывайтесь на наш Telegram-канал. В нем мы проводим интересные активности, делимся новостями компании и разыгрываем призы

Читать также:

22
реклама
разместить
Начать дискуссию
Как установить и использовать DeepSeek R-1 на вашем компьютере
Как установить и использовать DeepSeek R-1 на вашем компьютере

Многие говорят о DeepSeek R-1, новой языковой ИИ-модели с открытым исходным кодом, созданной китайской ИИ-компанией DeepSeek. Некоторые пользователи утверждают, что по возможностям рассуждения она не уступает или даже превосходит модель o1 от OpenAI.

5858
DeepSeek-R1? Не доверяйте новостям. Действительно ли эта модель с открытым исходным кодом превосходит даже OpenAI, или это очередная фейковая новость?
DeepSeek-R1? Не доверяйте новостям. Действительно ли эта модель с открытым исходным кодом превосходит даже OpenAI, или это очередная фейковая новость?

Я не верю тому, что они говорят, и вы тоже не должны верить. А если быть последовательным, то и вы не должны доверять моим словам. Но я докажу свои слова фактами и доказательствами.

2626
Вложили 1,5 млн рублей в кондитерский отдел — закрылись через 4 месяца с долгом в 350 000

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

Важное примечание: эту картинку нам сгенерил чат ДжиПиТи-шка — в этой статье это единственная бурная фантазия нашего редактора
3D-пончики, симулятор воды и старая добрая «Змейка»: как пользователи тестируют навыки программирования o3-mini и DeepSeek-R1

Собрали несколько примеров из соцсетей.

3939
77
22
22
11
Здравствуйте, DeepSeek. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают нагибают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого…). Ну а если за злого… то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого… (в горах, там есть старый форт…) Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее… поставить протез. Сохранятся можно… P.S. Я джва года хочу такую игру.
Модель ИИ рассуждений OpenAI иногда «думает» на китайском языке (и не только), и никто не знает, почему

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

Пользователи гадают о причинах рассуждений на иностранном языке. <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fx.com%2FRishabJainK%2Fstatus%2F1877157192727466330&postId=1755019" rel="nofollow noreferrer noopener" target="_blank">Источник</a><br />
44
Пользователи заметили, что o1 от OpenAI может неконтролируемо переключаться на китайский и другие языки во время решения задач

Исследователи предполагают, что причина не только в иностранных данных для обучения, пишет TechCrunch.

66
11
11
Роуминг в ЭДО: почему без него никак

Расскажем, что это такое, кто его оплачивает и как происходит настройка.

Роуминг в ЭДО: почему без него никак
11
🤯 Обзор актуальных LLM
11
Исследователи обучили конкурента OpenAI за полчаса и менее чем за $50

На прошлой неделе DeepSeek поверг в шок технологический и финансовый рынок США, заявив, что смог создать свою модель в 20 раз дешевле, чем у OpenAI. А тут – даже не за $6 000, а $50! И не китайцы (голь на выдумку хитра), а американцы! О чем речь и почему это так важно?

Знаменитый простой вопрос, на котором ломаются многие ИИ модели. <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Farxiv.org%2Fpdf%2F2501.19393&postId=1797795" rel="nofollow noreferrer noopener" target="_blank">Источник</a><br />
22
реклама
разместить
Будущее LLM: 7 прогнозов на 2025 год
Будущее LLM: 7 прогнозов на 2025 год

Языковые модели, или LLM, продолжают впечатлять своим развитием. Технологии становятся умнее, их возможности шире, а применение в бизнесе и жизни — еще полезнее. В 2024 году LLM обрели зрение и память, получили доступ к актуальной информации и подтянули знания в кодинге. Чего ожидать от 2025 года? Собрал наиболее правдоподобные прогнозы и добавил с…

Кто лучше решает задачи: DeepSeek или ChatGPT?

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

<a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fmatharena.ai%2F&postId=1800028" rel="nofollow noreferrer noopener" target="_blank">Источник</a>
33
🌚🖲️ OpenAI выпустили o3-mini бесплатно: в чем подвох

OpenAI только что анонсировала новую модель o3-mini, и хотя она доступна бесплатно, это не значит, что все смогут ей пользоваться без ограничений. Пока что лимиты для бесплатных пользователей не совсем ясны, но для Pro подписчиков доступ без лимитов. Team и Plus пользователи смогут отправлять по 150 сообщений в день.

11
[]