Собрали в одном месте самые важные ссылки
читайте авторский блог
В продолжение к первой статье, хочу на примере показать вариант работы с FPGA (ПЛИС) на python. В данной статье затрону подробнее аспект тестирования. Если фреймворк MyHDL позволяет людям, работающим на python, используя знакомый синтаксис и экосистему, заглянуть в мир FPGA, то опытным разработчикам ПЛИС смысл использования python не ясен. Парадигмы описания аппаратуры для MyHDL и Verilog похожи, а выбор в пользу определенного языка вопрос привычки и вкуса. За Verilog/VHDL выступает то, что на этих языках давно пишут прошивки, и по факту они являются стандартными для описания цифровой аппаратуры. Python, как новичок в этой сфере, может конкурировать в области написания тестового окружения. Значительную часть времени у FPGA разработчика занимает тестирование своих дизайнов. Далее я хочу на примере продемонстрировать как это делается в python с MyHDL. Допустим, есть задача описать на ПЛИС некое устройство, работающее с памятью. Для простоты возьму память, общающуюся с другими устройствами через параллельный интерфейс (а не через последовательный, например I2C). Такие микросхемы не всегда бывают практичны в виду того, что для работы с ними требуется много пинов, с другой стороны обеспечивается более быстрый и упрощенный обмен информации. Например отечественная 1645РУ1У и ее аналоги.
Рейтинги, статистика и немного исходного кода на Python под катом.
В последовательном программировании я постоянно сталкиваюсь с очевидным желанием не останавливать работу программы в момент, когда целью отдельных задач(процессов) является периодические действия — например, опрос значений датчиков, или передача данных по расписанию на сервер, или ввод/вывод большого объема данных. Самое простое, конечно, дождаться завершения периодического события и затем, не спеша, продолжить выполнять другие задачи.
Python компилируемый и интерпретируемый язык. Таким образом компилятор Python генерирует байткоды, а интерпретатор исполняет их.
В данный момент занимаюсь задачей стриминга (и преобразования) данных. В некоторых кругах
такой процесс известен как ETL, т.е. извлечение, преобразование и загрузка информации.
Весь процесс включает в себя участие следующих сервисов Google Cloud Platform:
В первой части статьи я описал основы использования аннотаций типов. Однако несколько важных моментов остались не рассмотрены. Во-первых, дженерики — важный механизм, во-вторых иногда может оказаться полезным узнать информацию об ожидаемых типах в рантайме. Но начать хотелось с более простых вещей
Поделюсь рассказом о небольшом проекте: как найти в комментариях ответы автора, заведомо не зная кто автор поста.
Свой проект я начинал с минимальными знаниями по машинному обучению и думаю для специалистов тут не будет ничего нового. Этот материал в некотором смысле компиляция разных статей, в нем расскажу, как подходил к задаче, в коде можно найти полезные мелочи и приемы с обработкой естественного языка.
Когда летом 2017 года мы запускали платформу, то задумались о том, как принимать криптовалюты и какой процессинг использовать. Увы, никто на тот момент не был готов дать хоть какие-либо гарантии по уязвимости контракта, да и история с атакой платформы DAO была еще на слуху. Мы не хотели идти по стопам DAO. К тому же, у нас были некоторые наработки по приему платежей через блокчейн. Так что мы решили самостоятельно проработать весь цикл проведения блокчейн-платежей. В этом посте мы расскажем о том, что у нас получилось, и, что самое интересное, — о том, какие проблемы нам пришлось решить в процессе.
Про создание и обучение моделей нейронных сетей (навыков) на Хабре написано не мало, поэтому не будем об этом сегодня. Обучив или получив сериализованные навыки ИИ, мы рассчитываем использовать их в наших целевых информационных системах, и тут возникает проблема. То что работает на стенде в лаборатории не перенести в производство в исходном виде, необходимо внедрение всего сопряженного стека технологий и даже существенная доработка под целевую платформу (есть, конечно, исключения в виде CoreML, но это частный случай и только для техники Apple). К тому же, инструментов разработки и сериализации моделей великое множество, неужели для каждого придется разрабатывать отдельное решение для интеграции? Кроме того, даже в лаборатории часто возникает необходимость получить быстрый вывод от модели, не ожидая прогрузки всего связанного девелоперского стека.
В качестве предложения по решению данных проблем я хотел бы рассказать про сравнительно новый opensource инструмент, который, возможно, будет вам полезен при разработке проектов, связанных с ИИ.
Задумывались ли вы когда-нибудь о том, как данные, с которыми вы работаете, выглядят в недрах Python? О том, как переменные создаются и хранятся в памяти? О том, как и когда они удаляются? Материал, перевод которого мы публикуем, посвящён исследованиям глубин Python, в ходе которых мы попытаемся выяснить особенности управления памятью в этом языке. Изучив эту статью, вы разберётесь с тем, как работают низкоуровневые механизмы компьютеров, в особенности те из них, которые связаны с памятью. Вы поймёте то, как Python абстрагирует низкоуровневые операции и познакомитесь с тем, как он управляет памятью.