MindSpore Quantum: рекомендации по внесению вклада
Перед отправкой первого кода в сообщество MindSpore Quantum необходимо подписать CLA.
Для индивидуальных участников подробная информация представлена в онлайн-документе ICLA.
С постепенным отказом от закона Мура становится всё труднее улучшать процесс производства интегральных схем и производительность чипов, а вычислительная мощность достигла предела. Архитектура классических компьютеров близка к пределу, и эта новая область технологий постепенно привлекает внимание общественности в то время, когда требования к вычислительной мощности больших моделей становятся всё более заметными.
Квант — это физическая концепция, которая означает минимальную и неделимую базовую единицу. Минимальная единица — квант; неделимая концепция называется квантованием. Её можно использовать для описания характеристик частиц в микрофизическом мире, таких как атомы и электроны. Слово «квант» происходит от латинского quantum, что переводится как «определённое количество материи».
Квантовые вычисления — это передовая технология, которая использует законы квантовой механики для управления квантовыми информационными единицами для вычислений. Вкратце, в компьютерах используются манипуляции с квантовыми битами. В настоящее время люди читают эту статью с помощью мобильных телефонов, компьютеров и других носителей информации. Базовое программное обеспечение представляет собой потоки данных 0 и 1, а соответствующее аппаратное управление — высокие и низкие уровни. Квантовые вычисления манипулируют квантовыми битами, микроскопическими частицами с характеристиками квантового состояния.
Квантовые вычисления широко используются в анализе криптографии, транспортных задачах (комбинаторные математические задачи оптимизации), материаловедении и химической инженерии, биомедицине (моделирование энергии химических молекул), искусственном интеллекте (квантовое машинное обучение), новых полупроводниках (квантовых чипах) и других областях.
Состояние кванта: $$ |\varphi>=\alpha |0>+\beta |1> $$
Установите MindSpore
Пожалуйста, установите MindSpore версии 1.4.0 или выше в соответствии с Руководством по установке на веб-сайте MindSpore.
MindSpore — это новый фреймворк для глубокого обучения с открытым исходным кодом, который можно использовать для мобильных устройств, периферийных устройств и облачных сценариев. MindSpore разработан для обеспечения опыта разработки с дружественным дизайном и эффективным выполнением для специалистов по данным и алгоритмических инженеров, встроенной поддержки процессора Ascend AI и совместной оптимизации программного и аппаратного обеспечения.
pip install mindquantum
Скачайте исходный код с Gitee:
cd ~
git clone https://gitee.com/mindspore/mindquantum.git
Компилируйте MindQuantum
Убедитесь, что CMake >= на Linux-системе. Установка MindQuantum
cd ~/mindquantum
bash build.sh --gitee
Ключ --gitee
позволяет скрипту загрузить сторонние зависимости с платформы хостинга кода Gitee.
Если вам нужно скомпилировать версию для GPU, сначала установите CUDA 11.x и соответствующий графический драйвер, а затем используйте параметры --gpu
, чтобы выполнить следующие инструкции по компиляции:
cd ~/mindquantum
bash build.sh --gitee --gpu
cd ~/mindquantum
build.bat /Gitee
cd ~/mindquantum
bash build.sh --gitee
Проверка успешной установки Выполните следующую команду. Если не будет сообщено об ошибке «No module named 'mindquantum'», установка прошла успешно.
python -c 'import mindquantum'
Компиляция MindQuantum предоставляет два метода компиляции пакета:
Скачайте исходный код из репозитория:
cd ~
git clone https://gitee.com/mindspore/mindquantum.git
Linux-система, в зависимости от CMake версии 3.18.3 и выше, компилируется изначально.
Используя ключ --gitee
, скрипт загружает сторонние зависимости с платформы хостинга кода Gitee; команда export
добавляет путь исходного кода mindquantum к переменной среды PYTHONPATH.
cd ~/mindquantum
bash build_locally.sh --gitee
export PYTHONPATH=`pwd`$PYTHONPATH
Windows-система, в зависимости от MinGW-W64 и CMake версии 3.18.3 и выше, компилируется изначально.
cd ~/mindquantum
build_locally.bat /Gitee -G 'MinGW Makefiles'
set PYTHONPATH=%cd%;%PYTHONPATH%
Mac-система, в зависимости от OpenMP и CMake версии 3.18.3 и выше, компилируется изначально.
cd ~/mindquantum
bash build_locally.sh --gitee
export PYTHONPATH=`pwd`$PYTHONPATH
Зависимость от системы
GCC-GNU Compiler Suite, инструкция по установке:
# Ubuntu install
apt-get update
apt-get install gcc
apt-get install build-essential
# Centos install
yum install gcc gcc-c++
# output gcc version,verify successful installation
gcc --version
C:\Users\xx> gcc --version
gcc
``` (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
**Обнаружена ошибка, можно отправить вопрос или обратиться к Google Baidu, см. [блог csnd](https://blog.csdn.net/jiqiren_dasheng/article/details/103775488).**
CMake — кроссплатформенный конструктор с открытым исходным кодом, инструкции по установке:
1. Перейдите на официальный сайт [CMake](https://cmake.org/) и выберите подходящую версию установочного пакета в соответствии с системой.
Для системы Windows рекомендуется **cmake-3.2*-windows-x86_64.msi**,
для системы Macos рекомендуется **cmake-3.2*-macos-universal.dmg**,
для системы Linux рекомендуется **cmake-3.2*-linux-x86_64.sh**.
2. Дважды щёлкните локально, чтобы открыть установочный пакет CMake, установите его в соответствии с запросом, обратите внимание, что CMake необходимо добавить в пользовательскую переменную, и, наконец, нажмите «Готово», чтобы завершить установку.
3. Откройте терминал, выведите команду в командной строке и выведите номер версии, чтобы указать успех.
```shell
cmake --version
>>> cmake version 3.24.2
```
MindQuantum в основном разрабатывается на C++ и Python, основная вычислительная единица реализована на C/C++, а верхний интерфейс и периферийные модули реализованы на Python.
Процесс разработки в основном делится на две категории: разработка новых функций и исправление ошибок:
Разработка новых функций: перейдите на страницу вопросов MindQuantum, отправьте вопрос, напишите описания новых функций, категории, методы реализации и т. д. Поговорите с командой разработчиков MindQuantum, чтобы подтвердить, нужна ли эта функция. Начните реализацию локально, напишите код, реализуйте функцию, напишите соответствующие тестовые примеры и соответствующую документацию. Отправьте PR, объедините его с основной веткой после проверки кода и завершите разработку новых функций.
Исправление ошибок: перейдите на страницу вопросов MindQuantum, прочитайте незакрытые вопросы и заявите о проблеме, чтобы решить проблему. Или, если вы столкнулись с ошибкой при использовании MindQuantum, вы можете отправить вопрос, чтобы помочь улучшить функциональный модуль MindQuantum.
mindquantum
для квантового контура, включающего H-gate, RX-gate и ry-gate, и получите квантовое состояние.from mindquantum import *
import numpy as np
encoder = Circuit().h(0).rx({'a0': 2}, 0).ry('a1', 1)
print(encoder)
print(encoder.get_qs(pr={'a0': np.pi / 2, 'a1': np.pi / 2}, ket=True))
Запуск этого кода выведет квантовый контур и конечное состояние.
┏━━━┓ ┏━━━━━━━━━━┓
q0: ──┨ H ┠─┨ RX(2*a0) ┠───
┗━━━┛ ┗━━━━━━━━━━┛
┏━━━━━━━━┓
q1: ──┨ RY(a1) ┠───────────
┗━━━━━━━━┛
-1/2j¦00⟩
-1/2j¦01⟩
-1/2j¦10⟩
-1/2j¦11⟩
ccsrc
основной вычислительный модуль, использующий реализацию C/C++.cmake
компилирует конфигурационную информацию cmake.docs
документация API Mind Quantum.mindquantum
квантовый вычислительный модуль Mind Quantum, реализованный на Python.
mindquantum.dtype
моделирование типа данных MindQuantum.mindquantum.core
основные функции MindQuantum (eDSL).
gata
модуль квантовых ворот, предоставляющий различные квантовые ворота. MindQuantum: основные модули и компоненты
Quantum circuit module — модуль квантовых схем, который позволяет легко создавать квантовые схемы, соответствующие требованиям, включая параметризованные квантовые схемы.
MindQuantum simulator — квантовый симулятор для моделирования эволюции квантовой системы.
MindQuantum framework — операторы и ячейки квантовых нейронных сетей.
MindQuantum algorithm — квантовый алгоритм.
MindQuantum device — аппаратный модуль Mind Quantum.
MindQuantum io — модуль ввода/вывода для MindQuantum.
MindQuantum engine — модуль движка MindQuantum.
MindQuantum utils — утилиты.
mindquantum_config — конфигурационная информация.
scripts — скрипт обновления зависимых инструментов.
tests — юнит-тесты MindQuantum, основанные на Pytest, написанные на Python.
third_party — сторонние пакеты с открытым исходным кодом, на которых компилируется MindQuantum.
tutorials — учебник Mind Quantum, который можно запустить напрямую с помощью jupyter. Описан в официальном документе MindSpore.
MindQuantum пишет модульные тесты на основе pytest. Рекомендуется, чтобы разработчики писали соответствующие модульные тесты после реализации новой функции или модуля, чтобы обеспечить нормальное функционирование.
Инструкции по написанию документации. MindQuantum имеет два основных типа документации:
Пожалуйста, следуйте этому стилю, чтобы MindSpore было легко просматривать, поддерживать и разрабатывать.
Рекомендации по кодированию. В сообществе MindSpore используются стиль кодирования Python, предложенный PEP 8 Coding Style, и стиль кодирования C++, предложенный Google C++ Coding Guidelines. Для проверки формата кода рекомендуется установить в вашей IDE плагины CppLint, CppCheck, CMakeLint, CodeSpell, Lizard, ShellCheck и PyLint.
Рекомендации по модульному тестированию. В сообществе MindSpore используется стиль модульного тестирования Python, предложенный pytest, и стиль модульного тестирования C++, предложенный Googletest Primer. Цель теста должна быть отражена в названии или комментарии к тесту.
Рекомендации по рефакторингу. Мы призываем разработчиков реорганизовывать наш код, чтобы устранить «запах кода». Все коды должны соответствовать требованиям стиля кодирования и стиля тестирования, и рефакторинг кодов не является исключением. Порог Lizard для nloc (строк кода без комментариев) составляет 100, а для cnc (цикломатическая сложность) — 20. Когда вы получаете предупреждение Lizard, вы должны реорганизовать код, который хотите объединить.
Рекомендации по документированию. Для проверки формата документов Markdown мы используем MarkdownLint. MindSpore CI изменяет следующие правила на основе конфигурации по умолчанию:
Подробнее см. RULES.
Разветвление репозитория MindSpore. Прежде чем отправлять код в проект MindSpore, убедитесь, что этот проект был разветвлён в вашем собственном репозитории. Это означает, что между репозиторием MindSpore и вашим собственным репозиторием будет параллельная разработка, поэтому будьте осторожны, чтобы избежать несоответствий между ними.
Клонирование удалённого репозитория. Если вы хотите загрузить код на локальный компьютер, лучше всего использовать git:
# Для GitHub
git clone https://github.com/{insert_your_forked_repo}/mindspore.git
git remote add upstream https://github.com/mindspore-ai/mindspore.git
# Для Gitee
git clone https://gitee.com/{insert_your_forked_repo}/mindspore.git
git remote add upstream https://gitee.com/mindspore/mindspore.git
Разработка кода локально. Чтобы избежать несоответствий между несколькими ветвями, Проверка новой ветки рекомендуется:
git checkout -b {new_branch_name} origin/master
В качестве примера можно взять основную ветку. MindSpore может создавать ветки версий и ветки последующего развития по мере необходимости, пожалуйста, сначала исправьте ошибки в основной ветке. Затем вы можете произвольно изменять код.
После обновления кода вы должны отправить обновление официальным способом:
git add .
git status # Проверьте статус обновления
git commit -m "Ваш заголовок коммита"
git commit -s --amend # Добавьте конкретное описание вашего коммита
git push origin {new_branch_name}
На последнем этапе вам нужно создать запрос на сравнение между вашей новой веткой и основной веткой MindSpore. После завершения запроса на вытягивание Jenkins CI будет автоматически настроен для сборки теста. Ваш запрос на вытягивание должен быть объединён с основной веткой как можно скорее, чтобы уменьшить риск слияния.
Отличный способ внести свой вклад в проект — отправить подробный отчёт при возникновении проблемы. Мы всегда ценим хорошо написанные и подробные отчёты об ошибках и будем благодарны вам за это!
При сообщении о проблемах используйте следующий формат:
— Какую версию env (mindspore, os, python и т. д.) вы используете? — Это ОТЧЁТ ОБ ОШИБКЕ или ЗАПРОС НА ФУНКЦИЮ? — В чём заключается проблема, добавьте метки, чтобы выделить её на панели управления проблемами. — Что произошло? — Чего вы ожидали? — Как воспроизвести проблему? (как можно более кратко и точно) — Особые замечания для рецензентов?
Советы по работе с проблемами:
— Если вы обнаружите незакрытую проблему, которую собираетесь решить, оставьте комментарий к этой проблеме, чтобы сообщить другим, что вы возьмёте её на себя. — Если проблема открыта некоторое время, рекомендуется, чтобы участники предварительно проверили её, прежде чем пытаться решить. — Если вы решаете проблему, о которой сообщили сами, также необходимо сообщить об этом другим перед закрытием проблемы. — Если вы хотите, чтобы на проблему ответили как можно быстрее, попробуйте добавить метки. Вы можете найти различные метки в списке меток.
— Выразите свою идею в виде проблемы на GitHub или Gitee. — Если это новая функция, которая требует большого количества деталей дизайна, также следует представить предложение по дизайну. — После достижения консенсуса в обсуждениях проблем и обзорах предложений по дизайну завершите разработку в разветвлённом репозитории и отправьте PR. — Ни один PR не допускается до тех пор, пока он не получит 2+ LGTM от утверждающих. Обратите внимание, что утверждающий не может добавлять LGTM к своему собственному PR. — После того как PR будет достаточно обсуждён, он будет объединён, заброшен или отклонён в зависимости от результатов обсуждения.
Рекомендации по PR:
— Следует избегать любых неуместных изменений. — Убедитесь, что история ваших коммитов упорядочена. — Всегда поддерживайте свою ветку в актуальном состоянии с основной веткой. — Для PR с исправлением ошибок убедитесь, что все связанные проблемы связаны.
В процессе разработки рекомендуется использовать функцию предварительного нажатия для выполнения самопроверки локального кода. Сканирование кода, аналогичное этапу проверки кода CI, может быть выполнено локально, чтобы повысить вероятность успешного прохождения контроля доступа. Для использования см. Краткое руководство по предварительному нажатию.
После завершения разработки предложите использовать vscode или pycharm для форматирования функций, чтобы стандартизировать стиль кода.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )