TGViewer
Channel Public Channel
Марков цепи пропил

Марков цепи пропил

@markovdrankthechains

Subscribers
3.4K
Photos
239
Videos
33
Links
86

Showing posts older than #263 · Back to latest

Older Posts 16 shown
Post #262 3.62K
v0.1.8

Добавлена поддержка VK bot api для автоматического создания звонков и split tunneling для определенных приложений.

Кратко про включение VK bot api описал [здесь] в последнем пункте, а релиз [тут]

Спасибо всем причастным за предложения/реквесты
  • 🔥 35
  • 👻 1
Post #261 3.42K
Хз, чего вы клоунов накидали. Мне, ну, не влом поковырять решение под иос с NetworkExtension. Если у кого-то есть лишний дев аккаунт с нужными доступами - напишите в личку группы. Но я все еще не знаю, будет ли оно стабильно работать в фоне: у вебкита нет части нужных функций, и мне приходилось писать костыли, которые выжирали ui thread при интенсивном трансфере данных
  • 😁 37
  • 🔥 8
  • 🤡 1
Post #260 3.3K
Короче не, я сдаюсь. У эпл слишком всратая политика. Для того, чтобы использовать их апи для VPN нужно закинуть им 99$, но учитывая последние новости вроде этой, решение в AppStore (для публикации которого еще и нужно юр. лицо) долго не проживет, а обычные люди не будут платить за аккаунт разработчика, чтобы собирать это из исходников. Я пытался поднимать сокет и гнать wireguard локально через него, и оно работало, но только на wifi. Как только поднималась мобильная сеть, прилетали логи формата "Network change detected with unsatisfied route and interface order [pdp_ip0, utun5]", после чего подключение умирало. При этом приложению система показывала, что с роутингами все в порядке. Пытался стучаться напрямую в проксю используя sing-box, но там почему-то не летели data-пакеты (keep-alive при этом работали нормально). Более того, сам webview для сафари - всратый и подключение через к VK у меня в принципе не работало (возможно потому что тестирую на ios16) из-за того, что браузер не поддерживает нужные фичи. Не вижу больше смысла тратить время в попытках заставить это все работать. Слышал, что кто-то адаптировал https://github.com/cacggghp/vk-turn-proxy под иос - лучше воспользуйтесь этим решением - там не должно быть проблем с циклами пакетов. Ненавижу эту систему, ее идеологию и процесс разработки под нее. Лучше сконцентрироваться на улучшении/оптимизации имеющегося пайплайна
  • 🤡 114
  • 🔥 50
  • 👌 18
  • 😢 11
Post #259 3.44K
Марков цепи пропил Дальше, думаю, iOS сяду ковырять. Интересно, какие там ограничения 🥱
Может что-нибудь из этого и выйдет, хз
  • 😁 20
  • 🔥 18
Post #258 4.08K
  • 😁 67
  • 🔥 5
  • 👻 1
Post #257 4.53K
Марков цепи пропил Дальше, думаю, iOS сяду ковырять. Интересно, какие там ограничения 🥱
Не думал, что самое первое ограничение, с которым я столкнусь - это кривой сайт эпл, не дающий занести свои кровные за подписку, без которой нельзя писать VPN-приложения
  • 😁 42
  • 👻 2
Post #256 4.19K
Дальше, думаю, iOS сяду ковырять. Интересно, какие там ограничения 🥱
  • 🔥 20
  • 💅 4
  • 🙏 3
Post #255 4.15K
В v0.1.7 внес ряд UX улучшений + исправлений:

В режиме creator’а появилась мультиоконность - можно создавать кучу звонков в телемосте на разных каналах данных. Например, опять же, можно открыть DataChannel если нужно загрузить что-то объемное, и в другой вкладке - video channel, если, например, нужно будет закинуть кому-то файлы.

Так же в телемосте на десктопе автоматизировано добавление пользователя - больше не нужно нажимать "Добавить" при попытке подключиться. В целом удалось повысить стабильность, и теперь можно просто насоздавать ссылок в начале дня, и подключаться по мере необходимости чтобы не сажать батарейку + поправлены разные баги и реализованы предложения из github issues.

Актуальные сборки, как водится, [здесь]
  • 🔥 28
  • 🎉 4
  • 🙏 1
  • 👻 1
Post #254 3.65K
  • 😁 5
Post #253 4.51K
Засылать данные по видеоканалу WebRTC - довольно интересная с инженерной точки зрения задача. На ум сразу приходит решение в виде стеганографии: внедрять в картинку последовательность пикселей определенных цветов на одной стороне, и расшифровывать на другой. Но, к сожалению, энкодер просто съест нужную информацию и на выходе мы получим мусор. Поэтому в голову пришла мысль: что, если мы встроимся в часть пайплайна аккурат до VP8? Для этого пришлось спустится на уровень ниже. Туннель работает поверх TrackLocalStaticSample - в нем pion отправляет VP8 фреймы как видеосемплы. Поэтому мы посылаем фреймы двух типов:

Keepalive - настоящие VP8 фреймы (interframe 17 байт, keyframe 30 байт каждый 60-й фрейм). Отправляются с частотой 25fps по таймеру когда нет данных. Нужны чтобы SFU/TURN считал видеопоток живым и не отключал

Data - фрейм данных: [0xFF][4 байта длина][payload]. Маркер 0xFF отличает от VP8 (у keyframe bit0=0, у interframe bit0=1, поэтому первый байт никогда не 0xFF)

Таким образом удается построить bidirectional канал связи, и отсылать данные как для download, так и для upload. Единственное ограничение - ширина канала за счет специфики, из-за чего скорость ограничена в среднем 1.2 (+/- 0.2) мб/с. Тем не менее такой поток довольно сложно заметить/перехватить (в случае, если начнут обрубать по сигнатурам/VP8 фреймам - их всегда можно обновить/зашифровать). Я бы, наверное, советовал пользоваться именно этим каналом, так как он еще и меньше нагружает инфраструктуру, и его обычно достаточно для базового взаимодействия в интернете.

Оно реализовано в обновленном релизе v0.1.5 - [Исходники], [Билды]

Сейчас там по умолчанию установлен DataChannel, для видео нужно переключиться в выпадающем списке. Для того, чтобы оно работало, необходимо, чтобы и у creator’a и у joiner’а совпадали каналы передачи данных (video - video, data channel - data channel). Так же необходимо, чтобы при заходе в звонок через video channel в интерфейсе была включена камера (реальную камеру оно не включает - можно не давать разрешения, так как поток все равно фейковый), потому что иначе нужный канал данных просто не откроется, и подключение провалится
  • 🔥 51
  • 🙏 1
Post #252 4.34K
Блин, эмодзи с аниме из реакций пропали. Подайте админу бустов, пожалуйста

https://t.me/boost/markovdrankthechains

UPD: Всем спасибо
  • 🎉 17
  • 🙏 2
  • 💅 1
Post #251 17.5K
Major update v0.1.0

Добавил поддержку телемоста. Это было то еще приключение, но в итоге работает. Главное - не загружать большие файлы с joiner’а, а то SFU, видимо, захлебывается и умирает. Также наформошлепил на электроне десктопные версии, чтобы не запускать снипет каждый раз из браузера + туда зашиты бинарники на go, чтобы не поднимать relay руками. Пока думаю над тем, как пересылать данные в видеопотоке минуя vpx (на случай, если дата-каналы прикроют), так как если просто слать фейковое видео, то из-за компрессии мы будем терять данные, и, кажется, даже автокоррекция ошибок здесь не поможет. В целом работы предстоит много: нужно искать какие сервисы еще могут помочь в обходе, автоматизировать создание/присоединение к звонкам, искать/править баги, улучшать пайплайны, и в целом подумать, как можно улучшить пользовательский опыт. Боюсь, что в соло у меня рук не хватит, поэтому если есть желание поучаствовать - welcome

Все билды/исходнки, по-классике здесь [тык, тык]
  • 🔥 59
  • 👻 3
Post #248 47.7K
Dial-up 2.0, или гоним трафик в обход белых списков через звонки в ВК

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

VK-звонки работают через WebRTC с Selective Forwarding Unit, который пробрасывает SCTP DataChannel между участниками, не заглядывая внутрь. Помимо своего animoji-канала (id:1) VK туда ничего больше не кладёт, поэтому можно создать рядом свой DataChannel (id:2) и использовать его как двунаправленный пайп для произвольных данных. Весь трафик при этом идёт через TURN-серверы VK, которые находятся в белых списках - для DPI это выглядит как обычный звонок.

На стороне Creator'а (тот, у кого есть доступ в интернет) запускается Go relay и hook.js сниппет в браузере. Сниппет хукает RTCPeerConnection, перехватывает ICE-конфигурацию прямо из конструктора, после чего создаётся туннельный DataChannel и бриджится с локальным WebSocket'ом, через который relay раздаёт трафик наружу.

На стороне Joiner'а (тот, кто в зоне белых списков) всё чуть интереснее. Приложение открывает VK-звонок в WebView, поднимает VpnService, который перехватывает весь IP-трафик устройства, прогоняет его через tun2socks, дальше в SOCKS5 прокси на Go, и уже оттуда через WebSocket в тот же DataChannel. Go-часть собирается через gomobile в .aar и линкуется прямо в APK, поэтому можно обойтись без рута/termux.
На speed test получилось добиться 9.57 Мбит/с на скачивание, 4.15 Мбит/с на загрузку с задержкой 14 мс до Брюсселя с мобильной сети.

Есть моменты, которые можно улучшить и автоматизировать, но в целом пока пойдет.

Код/билды здесь [тык]
  • 🔥 140
  • 😁 9
  • 👻 3
  • 🦄 1
Post #242 3.7K
Simple Recipe Works: Vision-Language-Action Models are Natural Continual Learners with Reinforcement Learning [ссылка]

Tldr: челы решили проверить, есть ли смысл в существующих методах Continual RL для обучения роботов, или можно обойтись простым Sequential Fine-Tuning с LoRA и on-policy RL.

Большие VLA-модели вроде OpenVLA или Pi-0 хорошо обобщаются, но ломаются при деплое в меняющейся среде. Чтобы агент мог адаптироваться к новым задачам через взаимодействие со средой, его нужно дообучать с RL постепенно, не имея доступа к данным предыдущих задач. Но есть проблема: Sequential Fine-Tuning в такой постановке ведёт к катастрофическому забыванию, модель переобучается на текущей задаче и теряет навыки предыдущих.

Существующие методы Continual RL решают это тремя способами: регуляризацией весов (EWC штрафует обновления параметров, важных для прошлых задач), воспроизведением прошлого опыта (Expert Replay и Dark Experience Replay хранят демонстрации или логиты и перемешивают их с текущим обучением) и изоляцией параметров (Dynamic Weight Expansion выделяет отдельный LoRA-адаптер на каждую задачу). Для больших моделей есть и более свежие подходы: SLCA применяет разные learning rate для разных слоёв, RETAIN после каждой задачи вмёрживает веса обратно в базовую модель с коэффициентом дисконтирования.

Авторы берут простейший Seq. FT с LoRA и GRPO и гоняют его вместе со всеми перечисленными методами на трёх VLA-моделях (OpenVLA-OFT, OpenVLA, Pi-0) и пяти бенчмарках (LIBERO-Object, LIBERO-Spatial, LIBERO-Long, RoboCasa, ManiSkill). И в результате Seq. FT с LoRA и GRPO выигрывает или не уступает во всех сетапах, при этом падение успешности на прошлых задачах меньше 2%, нередко уходя в минус, то есть обучение на новых задачах ещё и улучшает старые. EWC, SLCA и RETAIN хуже учатся новым задачам - ограничения на обновления параметров мешают не только забывать старое, но и усваивать новое, поэтому итоговый avg ниже. DWE вообще не получает transfer между задачами. Replay требует хранить демонстрации и при этом ничего не выигрывает. Zero-shot на незнакомых задачах у Seq. FT в большинстве сетапов не уступает модели, обученной сразу на всех задачах одновременно, то есть верхней границе качества. А там, где Seq. FT всё же отстаёт, хватает просто подольше потренировать слабые задачи.

Авторы объясняют это синергией трёх вещей. On-policy RL неявно удерживает политику близко к базовой, потому что обновления не могут сдвинуть вероятностную массу туда, где базовая политика почти не имеет поддержки. Большой размер модели помогает потому, что в пространстве миллиардов параметров обновление по новой задаче почти не затрагивает направления, важные для предыдущих. LoRA не даёт отдельным слоям переписываться полностью, при этом пластичность не страдает: on-policy обучение при разреженном вознаграждении информационно дёшево, и ёмкости адаптера хватает.

Пока все эксперименты проводились в симуляции. Решат ли авторы главную проблему RL - он не работает плохую масштабируемость в реальных средах, пока неизвестно. Но понаблюдать за развитием можно здесь [тык]
  • 👻 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →