MLX - это фреймворк для исследований в области машинного обучения для Apple Silicon, разработанный компанией Apple.
Некоторые ключевые особенности MLX включают:
• Знакомые API: MLX имеет API на языке Python, близкий к NumPy. MLX также имеет полнофункциональные API для C++, C и Swift, которые в точности повторяют API Python. В MLX есть пакеты более высокого уровня, такие как mlx.nn и mlx.optimizers, с API, близкими к PyTorch, что упрощает построение более сложных моделей.
• Композитные преобразования функций: MLX поддерживает композитные преобразования функций для автоматического дифференцирования, автоматической векторизации и оптимизации вычислительных графов.
• Ленивые вычисления: Вычисления в MLX являются ленивыми. Массивы материализуются только тогда, когда это необходимо.
• Динамическое построение графов: Графы вычислений в MLX строятся динамически. Изменение формы аргументов функций не вызывает медленной компиляции, а отладка проста и интуитивно понятна.
• Мультиустройства: Операции могут выполняться на любом из поддерживаемых устройств (в настоящее время это CPU и GPU).
• Унифицированная память: Заметным отличием MLX от других фреймворков является унифицированная модель памяти. Массивы в MLX находятся в общей памяти. Операции над массивами MLX могут выполняться на любом из поддерживаемых типов устройств без передачи данных.
MLX разработан исследователями машинного обучения для исследователей машинного обучения. Фреймворк задуман как удобный для пользователя, но при этом эффективный для обучения и развертывания моделей. Дизайн самого фреймворка также концептуально прост.
В репозитории примеров MLX есть множество примеров, включая обучение языковой модели трансформера, генерация крупномасштабных текстов с помощью LLaMA и тонкая настройка с помощью LoRA, генерация изображений с помощью Stable Diffusion, распознавание речи с помощью Whisper от OpenAI.
MLX на GitHub: https://github.com/ml-explore/mlx
Платформа: iOS
⭐️: 12.8K
Некоторые ключевые особенности MLX включают:
• Знакомые API: MLX имеет API на языке Python, близкий к NumPy. MLX также имеет полнофункциональные API для C++, C и Swift, которые в точности повторяют API Python. В MLX есть пакеты более высокого уровня, такие как mlx.nn и mlx.optimizers, с API, близкими к PyTorch, что упрощает построение более сложных моделей.
• Композитные преобразования функций: MLX поддерживает композитные преобразования функций для автоматического дифференцирования, автоматической векторизации и оптимизации вычислительных графов.
• Ленивые вычисления: Вычисления в MLX являются ленивыми. Массивы материализуются только тогда, когда это необходимо.
• Динамическое построение графов: Графы вычислений в MLX строятся динамически. Изменение формы аргументов функций не вызывает медленной компиляции, а отладка проста и интуитивно понятна.
• Мультиустройства: Операции могут выполняться на любом из поддерживаемых устройств (в настоящее время это CPU и GPU).
• Унифицированная память: Заметным отличием MLX от других фреймворков является унифицированная модель памяти. Массивы в MLX находятся в общей памяти. Операции над массивами MLX могут выполняться на любом из поддерживаемых типов устройств без передачи данных.
MLX разработан исследователями машинного обучения для исследователей машинного обучения. Фреймворк задуман как удобный для пользователя, но при этом эффективный для обучения и развертывания моделей. Дизайн самого фреймворка также концептуально прост.
В репозитории примеров MLX есть множество примеров, включая обучение языковой модели трансформера, генерация крупномасштабных текстов с помощью LLaMA и тонкая настройка с помощью LoRA, генерация изображений с помощью Stable Diffusion, распознавание речи с помощью Whisper от OpenAI.
MLX на GitHub: https://github.com/ml-explore/mlx
Платформа: iOS
⭐️: 12.8K
GitHub
GitHub - ml-explore/mlx: MLX: An array framework for Apple silicon
MLX: An array framework for Apple silicon. Contribute to ml-explore/mlx development by creating an account on GitHub.
❤1
Проектируем системный дизайн Spotify
Это вопрос для собеседования по проектированию систем, в котором вам предстоит спроектировать Spotify. Обычно на реальном собеседовании вы сосредоточитесь на одной или двух основных функциональных возможностях приложения, но в этой статье я хотел бы сделать общий обзор того, как вы будете проектировать такую систему, а затем вы сможете углубиться в каждую отдельную часть, если потребуется.
Статья: https://apptractor.ru/develop/proektiruem-sistemnyy-dizayn-spotify.html
Платформа: разработка
Поставьте 👍, если хотите еще статей с примерами системного дизайна.
Это вопрос для собеседования по проектированию систем, в котором вам предстоит спроектировать Spotify. Обычно на реальном собеседовании вы сосредоточитесь на одной или двух основных функциональных возможностях приложения, но в этой статье я хотел бы сделать общий обзор того, как вы будете проектировать такую систему, а затем вы сможете углубиться в каждую отдельную часть, если потребуется.
Статья: https://apptractor.ru/develop/proektiruem-sistemnyy-dizayn-spotify.html
Платформа: разработка
Поставьте 👍, если хотите еще статей с примерами системного дизайна.
👍6
Lingshot - это простой, но мощный инструмент для перевода скриншотов, который делает многоязычное общение более доступным, чем когда-либо прежде. С помощью этого приложения вы можете сделать скриншот любого текста и мгновенно перевести его на нужный вам язык - с распознаванием текста и использованием ChatGPT.
Основной целью этого проекта является продвижение модульной, масштабируемой, поддерживаемой и тестируемой архитектуры. Он включает в себя передовой технологический стек и воплощает лучшие практики разработки программного обеспечения. Хотя приложение может показаться простым, оно включает в себя все основные компоненты, которые формируют фундамент для надежного, крупномасштабного приложения.
Принципы проектирования и архитектурные решения, использованные в этом проекте, идеально подходят для больших команд и длительных жизненных циклов приложений. Это приложение не только демонстрирует функциональные возможности, но и служит свидетельством того, как хорошо структурированный и грамотно написанный код служит стабильной основой для масштабируемых и поддерживаемых проектов по разработке программного обеспечения.
Lingshot на GitHub: https://github.com/CharlesMoreira1/lingshot
Платформа: Android
⭐️: 74
Основной целью этого проекта является продвижение модульной, масштабируемой, поддерживаемой и тестируемой архитектуры. Он включает в себя передовой технологический стек и воплощает лучшие практики разработки программного обеспечения. Хотя приложение может показаться простым, оно включает в себя все основные компоненты, которые формируют фундамент для надежного, крупномасштабного приложения.
Принципы проектирования и архитектурные решения, использованные в этом проекте, идеально подходят для больших команд и длительных жизненных циклов приложений. Это приложение не только демонстрирует функциональные возможности, но и служит свидетельством того, как хорошо структурированный и грамотно написанный код служит стабильной основой для масштабируемых и поддерживаемых проектов по разработке программного обеспечения.
Lingshot на GitHub: https://github.com/CharlesMoreira1/lingshot
Платформа: Android
⭐️: 74
Машинное обучение на устройствах с помощью MLX и Swift
MLX - это фреймворк для работы с машинным обучением на Apple Silicon. MLX предназначен для исследований, а не для развертывания моделей в приложениях. MLX Swift расширяет MLX на язык Swift, облегчая исследователям ML-эксперименты на процессорах Apple.
Статья: https://apptractor.ru/info/articles/mashinnoe-obuchenie-na-ustroystvah-s-pomoschyu-mlx-i-swift.html
Платформа: iOS
MLX - это фреймворк для работы с машинным обучением на Apple Silicon. MLX предназначен для исследований, а не для развертывания моделей в приложениях. MLX Swift расширяет MLX на язык Swift, облегчая исследователям ML-эксперименты на процессорах Apple.
Статья: https://apptractor.ru/info/articles/mashinnoe-obuchenie-na-ustroystvah-s-pomoschyu-mlx-i-swift.html
Платформа: iOS
Прекратите использовать тестовые теги в Jetpack Compose
Использование семантики делает ваше приложение доступным для людей с особыми потребностями и в то же время сохраняет его тестируемость. К сожалению, бывают ситуации, когда тестовый тег неизбежен или просто не стоит тратить время на семантику. С другой стороны, я надеюсь, что это сделает внедрение семантик менее сложным для вас и упростит чью-то жизнь с помощью вашего приложения.
Статья: https://apptractor.ru/info/articles/prekratite-ispolzovat-testovye-tegi-v-jetpack-compose.html
Платформа: Android/тестирование
Использование семантики делает ваше приложение доступным для людей с особыми потребностями и в то же время сохраняет его тестируемость. К сожалению, бывают ситуации, когда тестовый тег неизбежен или просто не стоит тратить время на семантику. С другой стороны, я надеюсь, что это сделает внедрение семантик менее сложным для вас и упростит чью-то жизнь с помощью вашего приложения.
Статья: https://apptractor.ru/info/articles/prekratite-ispolzovat-testovye-tegi-v-jetpack-compose.html
Платформа: Android/тестирование
20 лет Xcode год за годом
В следующий раз, когда вы откроете Xcode, чтобы исправить небольшую ошибку, продумать идею следующего приложения на миллиард долларов или узнать больше о разработке для iOS, помните, что у каждого приложения есть история — и мы все пишем ее строку за строкой.
Статья: https://apptractor.ru/info/articles/20-let-xcode-god-za-godom.html
Платформа: iOS
В следующий раз, когда вы откроете Xcode, чтобы исправить небольшую ошибку, продумать идею следующего приложения на миллиард долларов или узнать больше о разработке для iOS, помните, что у каждого приложения есть история — и мы все пишем ее строку за строкой.
Статья: https://apptractor.ru/info/articles/20-let-xcode-god-za-godom.html
Платформа: iOS
👍3
EmojiKit - SDK на базе Swift, позволяющий использовать эмодзи в приложениях для всех основных платформах Apple (iOS, macOS, tvOS, watchOS и visionOS). EmojiKit предоставляет все необходимое для работы с эмодзи, включая категории, варианты оттенков кожи, информацию о юникоде и версии, поддержку локализации и т.д.
EmojiKit на GitHub: https://github.com/Kankoda/EmojiKit
Платформа: iOS
⭐️: 34
EmojiKit на GitHub: https://github.com/Kankoda/EmojiKit
Платформа: iOS
⭐️: 34
Почему Ollie перешел от SwiftUI к UIKit
Мы обнаружили, что в SwiftUI много «магии», которая затрудняет понимание. В SwiftUI есть множество неявных скрытых предположений, которые, если их не соблюдать, могут привести к неожиданным болезненным результатам.
Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
Мы обнаружили, что в SwiftUI много «магии», которая затрудняет понимание. В SwiftUI есть множество неявных скрытых предположений, которые, если их не соблюдать, могут привести к неожиданным болезненным результатам.
Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
❤3
Decompose - это библиотека Kotlin Multiplatform для разбиения кода на древовидную структуру, состоящую из небольших независимых компонентов бизнес-логики (BLoC), учитывающих жизненный цикл, с функцией маршрутизации и подключаемым пользовательским интерфейсом (Jetpack/Multiplatform Compose, Android Views, SwiftUI, Kotlin/React и т.д.).
Decompose проводит четкие границы между кодом пользовательского интерфейса и кодом, не относящимся к нему, позволяет правильно делать Dependency injection (DI) и Inversion of control (IoC), иметь общую логику навигации и т.д.
Decompose на GitHub: https://github.com/arkivanov/Decompose
Платформа: Android/кроссплатформа
⭐️: 1.8K
Decompose проводит четкие границы между кодом пользовательского интерфейса и кодом, не относящимся к нему, позволяет правильно делать Dependency injection (DI) и Inversion of control (IoC), иметь общую логику навигации и т.д.
Decompose на GitHub: https://github.com/arkivanov/Decompose
Платформа: Android/кроссплатформа
⭐️: 1.8K
🔥4
7 открытых iOS-проектов, которые помогут изучить SwiftUI
Чтение кода (и его понимание) — один из лучших способов улучшить свои навыки разработки. Проекты с открытым исходным кодом — самое правильное место, где можно узнать о лучших практиках, стилях программирования и многих других темах. В этой статье список из 7 iOS-проектов на SwiftUI, которые помогут вам научиться новому.
Статья: https://apptractor.ru/develop/7-otkrytyh-ios-proektov-kotorye-pomogut-izuchit-swiftui.html
Платформа: iOS
Чтение кода (и его понимание) — один из лучших способов улучшить свои навыки разработки. Проекты с открытым исходным кодом — самое правильное место, где можно узнать о лучших практиках, стилях программирования и многих других темах. В этой статье список из 7 iOS-проектов на SwiftUI, которые помогут вам научиться новому.
Статья: https://apptractor.ru/develop/7-otkrytyh-ios-proektov-kotorye-pomogut-izuchit-swiftui.html
Платформа: iOS
🔥2
Отслеживание времени сборки Android-проекта
Сколько часов вы просидели перед Android Studio, просматривая сообщение «Gradle Build Running», просто ожидая сборки и развертывания приложения на вашем устройстве? Для больших приложений, совместно используемых десятками разработчиков, измерение этого числа важно для определения того, сколько времени может быть потрачено впустую
Статья: https://apptractor.ru/info/articles/otslezhivanie-vremeni-sborki-android-proekta.html
Платформа: Android
Сколько часов вы просидели перед Android Studio, просматривая сообщение «Gradle Build Running», просто ожидая сборки и развертывания приложения на вашем устройстве? Для больших приложений, совместно используемых десятками разработчиков, измерение этого числа важно для определения того, сколько времени может быть потрачено впустую
Статья: https://apptractor.ru/info/articles/otslezhivanie-vremeni-sborki-android-proekta.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
VerticalSplit - реализации разделенного на две части экрана с динамическими границами в SwiftUI. Вдохновлена приложением Amie для iOS.
VerticalSplit на GitHub: https://github.com/vedantgurav/VerticalSplit
Платформа: iOS
⭐️: 46
VerticalSplit на GitHub: https://github.com/vedantgurav/VerticalSplit
Платформа: iOS
⭐️: 46
❤2
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
•
(iOS Ru)
Пишем текстовую RPG•
(iOS En)
How to Create 3D App Icons for visionOS•
(iOS En)
How to easily mock ANY network call with URLProtocol•
(iOS En)
Elastic Custom Segmented Control - SwiftUI•
(iOS En)
Custom SwiftUI Calendar•
(And Ru)
Наш опыт внедрения Compose в большой проект•
(And Ru)
Многомодульность: что это такое?•
(And Ru)
Жизнь инди в Google Play•
(And Ru)
Разработка новостного приложения. Часть 2•
(And En)
The Ultimate Package Structure Guide for Android Developers•
(And En)
Modern Dependency Management With Version Catalogs•
(And En)
Modularization at scale with Alireza Tizfahmfard•
(Dev Ru)
Топ 5 книг для синьора•
(Dev En)
Machine Learning in 2024 – Beginner's Course•
(Dev Ru)
Как мы пытались растить выручку через персонализациюЧто вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
AppTractor
Пишем текстовую RPG
Пример написания текстовой игры на Swift. https://www.youtube.com/watch?v=7H9xICrE5jU
ComposeInvestigator - отслеживает рекомпозиции Composable с указанием причины, без какого-либо шаблонного кода. Он может выполнять следующие задачи:
• Сообщает, если Composable пропущен при рекомпозиции.
• Сообщает, если аргументы элемента изменились и он был перекомпонован. Он также может сравнить значения до и после изменения.
• Сообщает, были ли изменены значения состояния внутри Composable. Также можно сравнить значения до и после изменения.
• Получает стек вызовов, ведущий к вовлечению Composable. Это помогает определить конкретный Composable, который перекомпонуется, когда один и тот же Composable используется повторно в нескольких местах.
ComposeInvestigator на GitHub: https://github.com/jisungbin/ComposeInvestigator
Платформа: Android
⭐️: 60
• Сообщает, если Composable пропущен при рекомпозиции.
• Сообщает, если аргументы элемента изменились и он был перекомпонован. Он также может сравнить значения до и после изменения.
• Сообщает, были ли изменены значения состояния внутри Composable. Также можно сравнить значения до и после изменения.
• Получает стек вызовов, ведущий к вовлечению Composable. Это помогает определить конкретный Composable, который перекомпонуется, когда один и тот же Composable используется повторно в нескольких местах.
ComposeInvestigator на GitHub: https://github.com/jisungbin/ComposeInvestigator
Платформа: Android
⭐️: 60
❤1
Android Lint: оптимизируем проверку мердж-реквестов
В этой статье расскажу, как добавил новое правило, чтобы lint предлагал использовать внутреннюю функцию нашего проекта. В рамках этой статьи я не буду описывать, какие зависимости и как нужно добавить в проект — информации об этом и так достаточно в этих ваших интернетах.
Статья: https://habr.com/ru/companies/ru_mts/articles/797053/
Платформа: Android
В этой статье расскажу, как добавил новое правило, чтобы lint предлагал использовать внутреннюю функцию нашего проекта. В рамках этой статьи я не буду описывать, какие зависимости и как нужно добавить в проект — информации об этом и так достаточно в этих ваших интернетах.
Статья: https://habr.com/ru/companies/ru_mts/articles/797053/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
MLX Swift Chat - пример запуска LLM-модели локально с помощью MLX. MLX - это эффективный фреймворк машинного обучения, специально разработанный для Apple Silicon. Сам проект - полностью нативное приложение SwiftUI, которое позволяет запускать локальные LLM-модели (например, Llama, Mistral) на процессоре Apple в режиме реального времени с помощью MLX.
MLX Swift Chat на GitHub: https://github.com/PreternaturalAI/mlx-swift-chat
Платформа: iOS
⭐️: 194
MLX Swift Chat на GitHub: https://github.com/PreternaturalAI/mlx-swift-chat
Платформа: iOS
⭐️: 194
❤3
Continuations для взаимодействия асинхронных задач с синхронным кодом
Continuations позволяют нам создать обертку над обработчиком завершения (completion handler) и асинхронными функциями, чтобы мы могли обернуть старый код в более современный API. Например, функция withCheckedContinuation() создает новое continuation, которое может запускать любой код, который мы хотим, а затем вызывает resume(returning:), чтобы отправить значение обратно, даже если это часть обработчика завершения (completion handler).
Статья: https://habr.com/ru/articles/797735/
Платформа: iOS
Continuations позволяют нам создать обертку над обработчиком завершения (completion handler) и асинхронными функциями, чтобы мы могли обернуть старый код в более современный API. Например, функция withCheckedContinuation() создает новое continuation, которое может запускать любой код, который мы хотим, а затем вызывает resume(returning:), чтобы отправить значение обратно, даже если это часть обработчика завершения (completion handler).
Статья: https://habr.com/ru/articles/797735/
Платформа: iOS
Начинаем тестирование со Сканером Доступности
В этой статье мы рассмотрели Accessibility Scanner — инструмент для проверки некоторых аспектов доступности приложений для Android. Хотя он не гарантирует полной доступности приложений, это отличный инструмент для поиска малозаметных проблем.
Статья: https://apptractor.ru/info/articles/accessibility-scanner.html
Платформа: Android
В этой статье мы рассмотрели Accessibility Scanner — инструмент для проверки некоторых аспектов доступности приложений для Android. Хотя он не гарантирует полной доступности приложений, это отличный инструмент для поиска малозаметных проблем.
Статья: https://apptractor.ru/info/articles/accessibility-scanner.html
Платформа: Android
Apollo Kotlin (ранее известный как Apollo Android) - это клиент GraphQL, который генерирует модели Kotlin и Java из запросов GraphQL.
Apollo Kotlin выполняет запросы и мутации на сервере GraphQL и возвращает результаты в виде типов Kotlin, специфичных для запроса. Это означает, что вам не нужно разбирать JSON, передавать Maps и заставлять клиентов вручную приводить значения к нужному типу. Вам также не нужно писать типы моделей самостоятельно, потому что они генерируются из определений GraphQL, которые использует ваш пользовательский интерфейс.
Поскольку сгенерированные типы зависят от запроса, вы можете получить доступ только к тем данным, которые вы указали в запросе. Если вы не запрашиваете определенное поле в запросе, вы не сможете получить доступ к соответствующему свойству возвращаемой структуры данных.
Эта библиотека разработана в первую очередь для Android, но вы можете использовать ее в любом приложении на Java/Kotlin, включая мультиплатформенные.
Apollo Kotlin на GitHub: https://github.com/apollographql/apollo-kotlin
Платформа: Android
⭐️: 3.6K
Apollo Kotlin выполняет запросы и мутации на сервере GraphQL и возвращает результаты в виде типов Kotlin, специфичных для запроса. Это означает, что вам не нужно разбирать JSON, передавать Maps и заставлять клиентов вручную приводить значения к нужному типу. Вам также не нужно писать типы моделей самостоятельно, потому что они генерируются из определений GraphQL, которые использует ваш пользовательский интерфейс.
Поскольку сгенерированные типы зависят от запроса, вы можете получить доступ только к тем данным, которые вы указали в запросе. Если вы не запрашиваете определенное поле в запросе, вы не сможете получить доступ к соответствующему свойству возвращаемой структуры данных.
Эта библиотека разработана в первую очередь для Android, но вы можете использовать ее в любом приложении на Java/Kotlin, включая мультиплатформенные.
Apollo Kotlin на GitHub: https://github.com/apollographql/apollo-kotlin
Платформа: Android
⭐️: 3.6K
🔥1
Введение в Изоляцию в Swift
Недавно кто-то задал мне вопрос об изоляции акторов. Конкретные детали не так важны, но я действительно задумался над этим вопросом, потому что, конечно, любой тут начнет испытывать трудности. Изоляция является центральным элементом работы параллелизма в Swift, но это совершенно новая концепция.
Несмотря на новизну, она использует в основном знакомые механизмы. Вероятно, вы уже понимаете то, как работает изоляция, просто пока не осознаете этого.
Вот описание концепций в самых простых терминах, которые я смог придумать.
Статья: https://apptractor.ru/info/articles/vvedenie-v-izolyatsiyu-v-swift.html
Платформа: iOS
Недавно кто-то задал мне вопрос об изоляции акторов. Конкретные детали не так важны, но я действительно задумался над этим вопросом, потому что, конечно, любой тут начнет испытывать трудности. Изоляция является центральным элементом работы параллелизма в Swift, но это совершенно новая концепция.
Несмотря на новизну, она использует в основном знакомые механизмы. Вероятно, вы уже понимаете то, как работает изоляция, просто пока не осознаете этого.
Вот описание концепций в самых простых терминах, которые я смог придумать.
Статья: https://apptractor.ru/info/articles/vvedenie-v-izolyatsiyu-v-swift.html
Платформа: iOS