CPPLASTIC Telegram 412
This media is not supported in your browser
VIEW IN TELEGRAM
Я обожнюю #QML. Все-таки Nokia сильно випередила час із ним.

Ліричний відступ для тих, хто не в темі: QML — це така мова в 💻. Вона декларативна, тобто ви описуєте, що хочете отримати, а не послідовність кроків для досягнення мети. Всі властивості обʼєктів у ній — реактивні, тобто, якщо ви пишете, що height: width / 2, то значення висоти оновлюватиметься щоразу, як оновилася ширина. Ну й на додачу можна писати локальні обробники сигналів на імперативному 💻, якщо треба. І все це швидко працює й рендериться на GPU. Непогано як для технології 2009 року отже.

Люди, правда, зазвичай ототожнюють QML (мову) і Qt Quick (один з UI-них фреймворків від Qt), але мову можна використовувати не тільки для UI.


Отож пишу на QML багацько. Останні пів року чи рік з ґітгабівським копайлотом. Проте для робочих проєктів для замовника копайлот не можна використовувати, бо досі з легальними питаннями не розібралися.

Вирішив спробувати приготувати QML-ний копайлот самостійно. Рецепт такий:
1. Беремо Ollama.
2. Додаємо FIM-модель (Fill-in-the-Middle) для QML, скажімо параметрів на сім-тринадцять мільярдів до смаку.
3. Ставимо у VS Code розширення, яке спілкуватиметься з моделлю.
4. ???????
5. PROFIT! 🥳

Гарні новини: модель існує й навіть офіційна від Qt. Ну, взагалі-то навчити з нуля модель такого розміру — дорого й невигідно, тому насправді це Meta-вська CodeLlama, яку дотренували на якомусь відкритому QML-коді типу офіційних прикладів.

Що взагалі робить будь-яка така модель? Ви закидаєте в неї код (текст), воно його токенізує якось (у кожної моделі власний токенізатор), а потім генерує декілька наступних токенів, які ми перетворюємо назад на текст. Тобто ви пишете import , а воно дає наступний токен чи декілька, які з 99% ймовірністю будуть QtQuick\n.

Але код ми не пишемо як повість на друкарській машинці — ми часто повертаємося кудись в середину, щось додаємо, міняємо, видаляємо тощо. Як же бути?

Якщо ми передаватимемо тільки текст до курсора, щоб модель щось додала від себе, то можемо загубити багато важливого контексту після, й доповнення не буде надто корисним.

Щоб розв'язати цю проблему, всі FIM-моделі дозволяють певного роду розмітку (насправді всі інші LLM також). Наприклад, CodeLlama дозволяє передавати їй текст у таких форматах:
<PRE>Текст до курсора<MID>
<PRE>Текст до курсора<SUF>Текст після курсора<MID>
<SUF>Текст після курсора<PRE>Текст до курсора<MID>

Тут токен <MID> каже моделі, що ось з цього місця — твій вихід, будь ласкава.

Погані новини: для VS Code я знайшов якесь розширення Llama Coder, і воно вже вміє працювати з CodeLlama, а також дозволяє вказувати власну модель. Але виявилося, що промпт воно формує у вигляді <PRE>…<SUF>…<MID>, а ці QML-ні моделі якось так дивно перенавчені, що у відповідь на це видають повну маячню.

Вони прям вимагають, щоб формат був <SUF>…<PRE>…<MID>. Довелося форкати розширення й міняти. По дорозі знайшов і виправив ваду з неправильною вичиткою налаштувань, а також додав кропаль покращень від себе.

Це запрацювало, хоча не сказати, що швидко. Точніше прям неприємно на моєму M1 Max / 64 GB — користуватися неможливо. І це 7 мільярдів параметрів, а не 13! Зате повністю локально, і доповнює вельми адекватно, щоправда форматування пливе.

Дивитимусь далі, що з цим можна ще зробити, щоб було зручно. Ненавиджу довгі мануали — треба, щоб однією кнопкою все встановлювалося ))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁31



tgoop.com/cpplastic/412
Create:
Last Update:

Я обожнюю #QML. Все-таки Nokia сильно випередила час із ним.

Ліричний відступ для тих, хто не в темі: QML — це така мова в 💻. Вона декларативна, тобто ви описуєте, що хочете отримати, а не послідовність кроків для досягнення мети. Всі властивості обʼєктів у ній — реактивні, тобто, якщо ви пишете, що height: width / 2, то значення висоти оновлюватиметься щоразу, як оновилася ширина. Ну й на додачу можна писати локальні обробники сигналів на імперативному 💻, якщо треба. І все це швидко працює й рендериться на GPU. Непогано як для технології 2009 року отже.

Люди, правда, зазвичай ототожнюють QML (мову) і Qt Quick (один з UI-них фреймворків від Qt), але мову можна використовувати не тільки для UI.


Отож пишу на QML багацько. Останні пів року чи рік з ґітгабівським копайлотом. Проте для робочих проєктів для замовника копайлот не можна використовувати, бо досі з легальними питаннями не розібралися.

Вирішив спробувати приготувати QML-ний копайлот самостійно. Рецепт такий:
1. Беремо Ollama.
2. Додаємо FIM-модель (Fill-in-the-Middle) для QML, скажімо параметрів на сім-тринадцять мільярдів до смаку.
3. Ставимо у VS Code розширення, яке спілкуватиметься з моделлю.
4. ???????
5. PROFIT! 🥳

Гарні новини: модель існує й навіть офіційна від Qt. Ну, взагалі-то навчити з нуля модель такого розміру — дорого й невигідно, тому насправді це Meta-вська CodeLlama, яку дотренували на якомусь відкритому QML-коді типу офіційних прикладів.

Що взагалі робить будь-яка така модель? Ви закидаєте в неї код (текст), воно його токенізує якось (у кожної моделі власний токенізатор), а потім генерує декілька наступних токенів, які ми перетворюємо назад на текст. Тобто ви пишете import , а воно дає наступний токен чи декілька, які з 99% ймовірністю будуть QtQuick\n.

Але код ми не пишемо як повість на друкарській машинці — ми часто повертаємося кудись в середину, щось додаємо, міняємо, видаляємо тощо. Як же бути?

Якщо ми передаватимемо тільки текст до курсора, щоб модель щось додала від себе, то можемо загубити багато важливого контексту після, й доповнення не буде надто корисним.

Щоб розв'язати цю проблему, всі FIM-моделі дозволяють певного роду розмітку (насправді всі інші LLM також). Наприклад, CodeLlama дозволяє передавати їй текст у таких форматах:
<PRE>Текст до курсора<MID>
<PRE>Текст до курсора<SUF>Текст після курсора<MID>
<SUF>Текст після курсора<PRE>Текст до курсора<MID>

Тут токен <MID> каже моделі, що ось з цього місця — твій вихід, будь ласкава.

Погані новини: для VS Code я знайшов якесь розширення Llama Coder, і воно вже вміє працювати з CodeLlama, а також дозволяє вказувати власну модель. Але виявилося, що промпт воно формує у вигляді <PRE>…<SUF>…<MID>, а ці QML-ні моделі якось так дивно перенавчені, що у відповідь на це видають повну маячню.

Вони прям вимагають, щоб формат був <SUF>…<PRE>…<MID>. Довелося форкати розширення й міняти. По дорозі знайшов і виправив ваду з неправильною вичиткою налаштувань, а також додав кропаль покращень від себе.

Це запрацювало, хоча не сказати, що швидко. Точніше прям неприємно на моєму M1 Max / 64 GB — користуватися неможливо. І це 7 мільярдів параметрів, а не 13! Зате повністю локально, і доповнює вельми адекватно, щоправда форматування пливе.

Дивитимусь далі, що з цим можна ще зробити, щоб було зручно. Ненавиджу довгі мануали — треба, щоб однією кнопкою все встановлювалося ))

BY Cіпласпластик


Share with your friend now:
tgoop.com/cpplastic/412

View MORE
Open in Telegram


Telegram News

Date: |

The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. Telegram users themselves will be able to flag and report potentially false content. A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first. Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.”
from us


Telegram Cіпласпластик
FROM American