Tech Mumble – Telegram
Tech Mumble
118 subscribers
37 photos
36 links
Рома Нефёдов. Делаю всякое беспилотное, до этого делал умные устройства Яндекса и девтузлы Яндекса.

Планирую делиться околорабочими новостями и мыслями.
Download Telegram
Попалась либа со стандартными контейнерами без динамических аллокаций от теслы — https://github.com/teslamotors/fixed-containers/

И я вот пытаюсь понять, они что ли весь код на C++ без аллокаций пишут? Не особо верится… ¯\_(ツ)_/¯

Ещё забавно, что github теслы максимально никакой, ни одной полезной опенсорс штуковины. При этом автор этой либы Sr. Staff Software Engineer at Tesla, Autopilot, судя по LinkedIn.
👀1
https://www.youtube.com/watch?v=AKMuA_TVz3A

Sutskever предлагает интересный взгляд на Unsupervised Learning как на задачу компрессии, а Kolmogorov Complexity как теоретический предел для этой компрессии.

У Scott Aaronson было хорошее объяснение почему Kolmogorov Complexity полезная абстракция.
Посмотрел keynote с bazelcon. Мне нравится, что bazel еле-еле, но становится таким стандартом де-факто для больших проектов. Грустно только что оно сильно завендерлочено, ничего не помешает гуглу через 5 лет закрыть проект, и всё загнётся.

Работают над тремя большими штуками.

* само собой пытаются выпилить поддержку С++ и Java из ядра, куда без этого
* bzlmod — перепридумали работу с внешними зависимостями, говорят давайте будем импортировать граф к себе, где-то я уже такое видел (вот так выглядит https://github.com/bazelbuild/bazel-central-registry/blob/main/modules/protobuf/3.19.6/MODULE.bazel)
* почему-то много внимания уделяют SBOM — списку зависимостей для проверки уязвимостей (https://security.googleblog.com/2022/06/sbom-in-action-finding-vulnerabilities.html)
Cruise забанили в SF, но это уже не новость, скорее интересно почему забанили сейчас за инцидент месячной давности.

Претензия к ним, что они "misrepresented information". Мне нравится версия, что они забыли выложить кусок видео.

Кстати, рекомендую NYT подкаст про рассуждения надо ли вообще разрешать беспилотники на текущем этапе развития — https://www.nytimes.com/2023/08/23/podcasts/the-daily/driverless-cars-san-francisco.html

https://getcruise.com/news/blog/2023/a-detailed-review-of-the-recent-sf-hit-and-run-incident/
https://twitter.com/Cruise/status/1716877217995894934
https://twitter.com/A_W_Gordon/status/1716892781984227384
Я верю в подход Carbon, да и Chandler внушает доверие. Пытаются сделать для C++ то, что Kotlin сделал с Java — drop-in replacement с хорошим interop-ом.

- в MVP 0.1 обещают только проработанный interop, выглядит неужасно
- в MVP 0.2 планируется заход на memory safety, но пока ничего непонятно, вероятно будет примерно как в Rust (borrow checker)
- для прозрачного interop-а активно используется clang (и очень правильно)

Всё это позиционируется как эксперимент, который может и не сойтись. Направление правильное, но господа двигаются медленее чем двигался Kotlin, хотя и задача у них сильно сложнее.

https://www.youtube.com/watch?v=1ZTJ9omXOQ0
👍1
nytimes про доставку дронами
Послушал подкаст Lex-а Fridman-а с CEO Boston Dynamics. Оч тяжко слушать с такой низкой плотностью информации.

* Boston Dynamics изначально делали симулятор, но потом вляпались в контракт с DARPA на создание собаки.
* Первая собака была на двухтактном ДВС — https://www.youtube.com/watch?v=cNZPRsrwumQ
* Раньше на эксперименты уходили годы, сейчас в симуляторе можно сделать всё за дни благодаря MPC(Model predictive control)
* Хуманоид (Atlas) скорее как R&D платформа, стоит миллион долларов, партия 1000+ штук, нужен мало где (атомные станции, fab-ы)
* Предыдущие 10 лет человечество учило роботов ходить ногами, следующие 10 лет будет учить делать что-то полезное
* Захотели сделать что-то полезное и заработать денег, так появился Stretch — роборука с колёсиками, тут вроде успех-успех
👍3
Я тут в дороге посмотрел много разных видео с Chris Lattner. Если кто не в курсе, то он сделал LLVM в рамках master thesis, делал девтулзы в Apple и там сделал Swift, потом были гугловые TPU, MLIR, TensorFlow и много всякого ещё.

Так вот, он говорит, что мир постепенно будет двигаться в сторону heterogeneous compute, т.е. системы будут состоять из всё большего числа специализированных сопроцессоров, а RISC-V поможет поджечь эту революцию.

Современные инструменты не готовы к такой модели вычислений, лучшее что есть — PyTorch. Ну и чтобы возглавить эту революцию они делают платформу — Modular и superset питона — mojo.

Заход сложный, но руки умелые, интересно будет понаблюдать.

https://nondot.org/sabre/
https://www.modular.com
👍2
Посмотрел как там дела у llvm libc

Господа придумали себе интересную задачу — реализовать libc на C++. Джастификация понятная — санитайзеры, статическая линковка, выкинуть тонны asm-а, современный язык.

Вот только из-за проблемы бутстрапа нельзя зависеть от STL и рантайма C++, т.е. не работают string, new/delete, virtual, global initialization, etc. Они не расстроились и написали свой STL…

Ещё 2-3 года планируют доделывать, и вряд ли оно окажется сравнимо по перфу с glibc сразу. А пока уже можно пытаться использовать в режиме overlay, как делает fuchsia.

libc корявая абстракция, с которой можно только смириться и вот так странно чуть-чуть улучшить, и хорошо что есть богатая компания гугл готовая за это платить

https://libc.llvm.org
Python + Zig + Rust = Mojo

Продолжая про heterogeneous compute. Один из самых интересных заходов в современном компиляторостроении — mojo. Поверх питона, с полной совместимостью со всей его экосистемой, хотят водрузить огромный и сложный superset-язык, как это было с C и С++. При этом обещают втащить в язык всё самое модное: темплейты как в zig (называют это elaboration), borrow checker как в rust, исключения похожи на zig.

Но самое главное — обещают, что можно будет generic-кодом бороть по производительности SotA системный код. Интересен способ достижения цели — разные оптимизационные проходы компилятора отключены и вынесены на уровень языка, т.е. пользователь сам может написать векторизацию. Рассказывают, что так победили SotA перемножения матриц на разных платформах — https://www.modular.com/blog/the-worlds-fastest-unified-matrix-multiplication . Исходников нет, но есть ссылки на вакансии :) Вообще мысль, что разработчиков компиляторов почти нет и нужно давать более выосокоуровневый интерфейс для оптимизаций — клёвая.

Направление очень интересное, буду следить. Пока оно даже в опенсорс не выложено.

https://docs.modular.com/mojo/roadmap.html — roadmap
https://www.youtube.com/watch?v=SEwTjZvy8vw — хороший свежий видос про текущий статус
🔥5
Microsoft Ignite

Посмотрел несколько кинотов с Ignite. Марк Русинович, оказывается, CTO Azure. Все разговоры вокруг LLM. Мне нравится как Майкрософт бежит по всем фронтам не заменять людей, а говорит, что каждому нужен copilot, это удобно снижает всевозможные риски. Microsoft теперь именуют себя copilot company.

Все большие теперь делают свои чипы, MS специально для LLM сделали Maia — “one of the largest chips on 5-nanometer process technology”.

Забавный бенч на скорость обучения GPT-3 — 4min.

Из технического, интересного мне, обещают вкладываться в Triton от OpenAI.

Я верю, что такими темпами человечество скоро упрётся в нехватку электричества, а там и до сферы Дайсона недалеко :)

https://www.youtube.com/watch?v=sgW_ww1Xxe8 — keynote
https://www.youtube.com/watch?v=c4SUhWBybXo — Inside Microsoft AI innovations with Mark Russinovich
https://openai.com/research/triton
👍2
Python3.11

Попался видос про ускорение питона в версии 3.11. Вот тут есть подробное описание — https://docs.python.org/3/whatsnew/3.11.html#faster-runtime

Из хорошего — хоть кто-то наконец-то смог ускорить питон на что-то заметное, говорят про 25% в среднем.

Помимо всякой мелочёвки типа снижения количества indirection до данных из dict и zero-cost исключений, основная фича — “PEP 659: Specializing Adaptive Interpreter”. Это такой poor mans JIT. Господа не гордые и прям руками инстанциируют и инвалидируют всякие разные специализации.

Как-то даже непонятно плакать или радоваться. 25% лучше чем ничего, но питон хорошо бы ускорить раз в 5, а для этого нужен настоящий JIT богатого человека, который ещё и надо как-то умудриться подружить со всей экосистемой биндингов. Это всё делабельно, но некому за такое платить, а опенсорс такое не умеет.

Ответ от mojo интересный — JIT говорят хорошо, но мало, надо ещё нишу C++ забрать — https://docs.modular.com/mojo/why-mojo.html#improving-cpython-and-jit-compiling-python

https://www.youtube.com/watch?v=xKk7IXm0XO0 — видос скучный
👍1
предыстория mlx — https://github.com/ml-explore/mlx
Посмотрел интересный рассказ от Keith Packard про историю возникновения X server. Первый релиз X11 вышел до моего рождения… До X11 было 10 версий, первые 9 не покидали MIT, была такая университетская поделка.

В те времена никакого открытого софта не было, была куча конкурирующих unix-like систем, и все вендоры пытались залочить пользователя. X11 родилась как попытка объединиться всех против Sun, которая доминировала со своим SunView. X therefore represents one of the first very large-scale distributed free and open source software projects.

Keith считает большой ошибкой, что они не послушали Stallman-а и не сделали X под GPL. А не послушали они его потому, что он сидел на соседнем этаже, и они его слишком хорошо знали.

Удивительно конечно, что этот кусок гавна мамонта всё ещё с нами…

https://www.youtube.com/watch?v=cj02_UeUnGQ
На досуге посмотрел много интервью с Линусом. Забавно как у него риторика про Rust поменялась, теперь он скорее позиционирует Rust как правильный эксперимент, который позволит не стагнировать ядру. Мне нравится его подход — сначала обгавкать, и если людям правда надо, то они продолжат настаивать. Правда основной профит он видит от того, что это привлекает молодёжь в ядро, потому что все остальные мэйнтейнеры это деды 60+.

https://www.youtube.com/watch?v=YyRVOGxRKLg — вот есть отрывок на 3 минутки
Понравилась презентация Rabbit R1 — живенько и свеженько. Мне близка идея, что в ассистенте не должно быть никаких специальных приложений/навыков/агентов на каждый чих, а должен быть общий эфир. Интересно посмотреть как оно в живую работает, теперь хотя бы есть повод купить что-то от teenage.engineering. Обещают старт продаж на easter (easter bunny?).

Отдельно интересно как они планируют платить за GPU без подписки, железка явно в ноль или минус.

Рекомендую — https://www.youtube.com/watch?v=22wlLy7hKP4

https://www.theverge.com/2024/1/9/24030667/rabbit-r1-ai-action-model-price-release-date
👍4
https://www.youtube.com/watch?v=a1jXzx3884g

Тут вот uber рассказывают, что сделали кросс-компиляцию для cgo через zig cc. Я даже не знал, что такое есть, и что этим так можно воспользоваться попытаться… Сомнительно, но поглядеть внутрь интересно. А ещё у них сервера на arm, интересно какие…
Nix + Bazel
Мы тут активно экспериментируем со связкой Nix + Bazel, я верю, что это единственно верный путь для нативных репозиториев. Тем удивительнее, что такой подход пока достаточно мало распространён.

Есть какие-то странные консалтеры — tweag, которые программируют на Haskell. Вот вакансия висит даже на Haskell-разработчика, обещают поездку в Париж и mental health service. Так вот, от них есть bazel rules для интеграции Nix. Оно в первом приближении работает, но шаг в сторону, и всё разваливается. Там нет каких-то фундаментальных проблем, просто хорошо видно, что они этим не пользуются для разработки на C++. Чтобы не быть голословным

* никто не подумал про compiler_rt (читай санитайзеры) — https://github.com/tweag/rules_nixpkgs/issues/442
* не подумано про пакетирование, rpath в nix торчит, даже загрузчика — https://github.com/tweag/rules_nixpkgs/issues/449

Зато умеют очень складно и красиво рассказывать, даже рекомендую — https://www.youtube.com/watch?v=dBru1MVKsfE

С большим напильником это всё можно заставить хорошо работать в итоге, но готового ничего нет. В любом случае, это значительно лучше чем брать deb-пакеты из системы или мучаться об затаскивание внешних библиотек под bazel.

Спасибо ПЖ за идею :)
👍4😁1
NASA + Caltech жёпят исходники вояджеров, и даже контракт не показывают, хотя обязаны по Freedom of Information Act. Срочно нужна теория заговора.

Please be advised that the information you requested is not a Government record. Generally, software is not a Government record. Additionally, not all data at the Jet Propulsion Laboratory are government records. Contractor records are not subject to the FOIA in that they are not Government records, not in our control, and beyond the reach of a FOIA request. In accordance with Clause H-37 of NASA Contract NNN12AA01C, the Contractor, California Institute of Technology (Caltech), shall own all copyrights in computer software, including derivative works, developed under this Contract. As this software was developed under the JPL contract, Caltech holds a copyright thereto, and, thus, even if the government was in possession of the source code, we could not provide it to you in violation of copyright law. This is a “no records” response.

NASA has determined that releasing this information could compromise security at Federal facilities and the safety of persons at the facilities as well as compromise security of NASA IT Critical infrastructure. A comprehensive listing of the information could also obstruct the ability of the Information Technology Office to protect the IT systems from intrusion.

https://www.muckrock.com/foi/united-states-of-america-10/voyager-command-analysis-software-source-code-28641/
https://www.muckrock.com/foi/united-states-of-america-10/caltechjpl-voyager-contract-28949/
Всё что нужно знать про OpenBLAS.

https://github.com/OpenMathLib/OpenBLAS/issues/2543
🙈3