1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mindspore-mindquantum

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTING_CN.md 32 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 05:44 2fbbadf

Руководство по внесению вклада в MindSpore Quantum

Посмотреть на английском языке

  • Руководство по внесению вклада в MindSpore Quantum
    • Лицензионное соглашение участника

    • Введение в квантовые вычисления

    • Установка и разработка

      • Установка

        • pip установка

          • Установите MindSpore версии 1.4.0 или выше, следуя инструкциям на сайте MindSpore.
        • Исходная установка

          1. Скачайте исходный код с сайта кода:
          cd ~
          git clone https://gitee.com/mindspore/mindquantum.git
          1. Скомпилируйте MindQuantum:
          • В системе Linux убедитесь, что у вас установлен CMake >= 3.18.3, затем выполните следующую команду:
          cd ~/mindquantum
          bash build.sh --gitee

          Здесь --gitee позволяет скрипту загружать сторонние зависимости с платформы управления кодом gitee. Если вам нужно скомпилировать версию для GPU, сначала установите CUDA 11.x и соответствующие драйверы для видеокарты, а затем используйте параметр --gpu для выполнения следующей команды компиляции:

          cd ~/mindquantum
          bash build.sh --gitee --gpu

          В системе Windows убедитесь, что установлены MinGW-W64 и CMake >= 3.18.3, а затем выполните следующую команду:

          cd ~/mindquantum
          build.bat /Gitee

          В системе Mac убедитесь, что установлены openmp и CMake >= 3.18.3, а затем выполните следующую команду:

          cd ~/mindquantum
          bash build.sh --gitee
          1. Установите скомпилированный пакет whl:

          Перейдите в каталог output и установите скомпилированный пакет MindQuantum whl с помощью команды pip.

      • Компиляция MindQuantum предоставляет два метода компиляции: компиляция пакета и локальная компиляция.

        1. Компиляция пакета: если вам необходимо адаптировать различные системные среды или версии Python, вы можете скомпилировать исходный код в пакет wheel, который затем можно установить. Подробные инструкции см. в разделе «Исходная установка».

        2. Локальная компиляция: если вы хотите добавить или изменить часть кода и быстро проверить его эффективность, вы можете использовать локальную компиляцию для компиляции кода C++ в файл .so, который затем может быть вызван Python. Вам не нужно повторно компилировать пакет, удалять и переустанавливать его, что удобно для отладки и тестирования.

        Скачайте исходный код из репозитория кода:

        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
    • Быстрый старт

    • Структура кода

    • Модульное тестирование

    • Написание документации

    • Процесс внесения вклада

      • Стиль кода
      • Модель разработки Fork-Pull
      • Сообщение об ошибках
      • Отправка PR
      • Локальный самоконтроль кода

Лицензионное соглашение участника

Перед отправкой кода в сообщество MindSpore Quantum вам необходимо прочитать и подписать «Лицензионное соглашение участников» (CLA).

Для индивидуальных участников обратитесь к онлайн-файлу ICLA.

Введение в квантовые вычисления

С постепенным ослаблением закона Мура, повышение интеграции микросхем становится всё более сложным, и производительность вычислений достигает узкого места. Архитектура классических компьютеров близка к пределу, и в условиях растущей потребности в вычислительной мощности для больших моделей квантовые вычисления становятся областью, привлекающей внимание широкой общественности.

Квант — это понятие из физики, означающее минимальную и неделимую основную единицу, где минимальная единица является квантом; концепция неделимости называется квантованием. Она используется для описания свойств частиц в микромире, таких как атомы и электроны. Слово «квант» происходит от латинского quantum, что означает «определённое количество материи».

Квантовые вычисления — это передовая технология, использующая законы квантовой физики для управления квантовыми информационными единицами для вычислений. Проще говоря, квантовые биты используются для управления компьютерами. В настоящее время люди используют мобильные телефоны, компьютеры и другие средства для доступа к этой статье, а программное обеспечение на нижнем уровне состоит из потока данных 0 и 1, соответствующего аппаратному управлению высоким и низким уровнем напряжения; квантовые вычисления управляют квантовыми битами, которые обладают свойствами квантового состояния микроскопических частиц.

Применение квантовых вычислений широко распространено и включает в себя криптоанализ, транспортные проблемы (задачи комбинаторной оптимизации), материаловедение, биомедицину (моделирование энергии химических молекул), искусственный интеллект (квантово-машинное обучение), полупроводники нового поколения (квантовые чипы) и другие области.

$$ |\varphi>=\alpha |0>+\beta |1> $$

Установка и разработка

Установка

Установите MindSpore

Следуйте инструкциям на веб-сайте MindSpore для установки версии 1.4.0 или более поздней версии MindSpore. MindSpore — это новая открытая платформа глубокого обучения, предназначенная для использования в пограничных и облачных сценариях. MindSpore предлагает удобный дизайн и высокую производительность, чтобы улучшить опыт разработчиков и специалистов по данным.

pip установка

  • Установите MindQuantum
pip install mindquantum

Исходная установка

  1. Загрузите исходный код с веб-сайта кода:

    cd ~
    git clone https://gitee.com/mindspore/mindquantum.git
  2. Скомпилируйте MindQuantum:

    В системе Linux убедитесь, что установлен CMake >= 3.18.3, а затем выполните следующую команду:

    cd ~/mindquantum
    bash build.sh --gitee

    Здесь --gitee позволяет скрипту загружать сторонние зависимости с платформы управления кодом gitee. Если вам необходимо скомпилировать версию для GPU, сначала установите CUDA 11.x и соответствующие драйверы для видеокарты, а затем используйте параметр --gpu для выполнения следующей команды компиляции:

    cd ~/mindquantum
    bash build.sh --gitee --gpu

    В системе Windows убедитесь, что установлены MinGW-W64 и CMake >= 3.18.3, а затем выполните следующую команду:

    cd ~/mindquantum
    build.bat /Gitee

    В системе Mac убедитесь, что установлены openmp и CMake >= 3.18.3, а затем выполните следующую команду:

    cd ~/mindquantum
    bash build.sh --gitee
  3. Установите скомпилированный пакет whl:

    Перейдите в каталог output и установите скомпилированный пакет MindQuantum whl с помощью команды pip. Перевод текста на русский язык:

При возникновении ошибки можно создать issue или обратиться к Google или Baidu, используя учебник CSND.

CMake — это кроссплатформенная программа для сборки с открытым исходным кодом. Установка:

  1. Перейдите на официальный сайт CMake и выберите подходящий пакет установки в зависимости от вашей системы.
  • Для Windows рекомендуется использовать cmake-3.2-windows-x86_64.msi*.
  • Для macOS рекомендуется использовать cmake-3.2-macos-universal.dmg*.
  • Для Linux рекомендуется использовать cmake-3.2-linux-x86_64.sh*.
  1. Дважды щёлкните по установленному файлу CMake, чтобы начать установку. Обратите внимание, что необходимо добавить CMake в пользовательские переменные. В конце нажмите «Finish», чтобы завершить установку.

  2. Откройте терминал и введите команду, чтобы вывести версию. Если вы видите версию, установка прошла успешно.

cmake --version
>>> cmake version 3.24.2

Разработка

MindQuantum использует C++ и Python для разработки. Основные вычислительные блоки реализованы на C/C++, а верхние интерфейсы и периферийные модули — на Python.

Процесс разработки делится на два основных класса: разработка новых функций и исправление ошибок.

  • Разработка новых функций: перейдите на страницу MindQuantum issue, создайте issue и опишите новую функцию, категорию и метод реализации. Общайтесь с командой разработчиков MindQuantum, чтобы определить, нужна ли эта функция. Начните реализацию локально, напишите код, реализуйте функцию и создайте соответствующие тестовые примеры и документацию. Отправьте PR, дождитесь проверки кода и объедините его с основной веткой. Разработка новой функции завершена.

  • Исправление ошибок: перейдите на страницу MindQuantum issue и просмотрите открытые issue. Примите задачу по исправлению ошибки или создайте новый issue при обнаружении ошибки во время использования MindQuantum.

Быстрое начало работы

  • Fork репозитория кода MindQuantum на Gitee.
  • Ознакомьтесь с информацией о проекте и инструкциями по сборке в файле README_CN.md.
  • Первый опыт — создание параметризованного квантового канала Используйте mindquantum для создания квантового канала, включающего H-ворота, RX-ворота и RY-ворота. Получите квантовое состояние.
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-документация MindQuantum.
  • mindquantum — квантовый вычислительный модуль MindQuantum, реализованный на Python. Включает следующие подмодули:
    • mindquantum.dtype — моделирование типов данных MindQuantum.
    • mindquantum.core — основные характеристики MindQuantum (eDSL). Включает:
      • gata — модуль квантовых ворот, предоставляющий различные квантовые ворота.
      • circuit — модуль квантового канала, позволяющий легко создавать квантовые каналы в соответствии с требованиями, включая параметризованные квантовые каналы.
      • operators — библиотека операторов MindQuantum.
      • parameterresolver — модуль анализа параметров, используемый для объявления используемых параметров.
    • mindquantum.simulator — симулятор эволюции квантовой системы.
    • mindquantum.framework — операторы и ячейки квантовых нейронных сетей.
    • mindquantum.algorithm — квантовые алгоритмы. Включает:
      • compiler — модуль компиляции квантовых каналов.
      • library — часто используемые алгоритмы.
      • nisq — алгоритмы NISQ.
      • error_mitigation — модули смягчения ошибок.
      • mapping — модули отображения битов.
    • mindquantum.device — модуль оборудования MindQuantum. MindQuantum: структура проекта
  • mindquantum.io — модуль ввода/вывода MindQuantum;
  • mindquantum.engine — модуль движка MindQuantum;
  • mindquantum.utils — набор утилит;
  • mindquantum_config — информация о конфигурации проекта;
  • scripts — скрипты для обновления инструментов компиляции;
  • tests — модульные тесты MindQuantum, написанные на Python с использованием Pytest;
  • third_party — сторонние пакеты, от которых зависит компиляция MindQuantum;
  • tutorials — учебные материалы по MindQuantum.

Модульное тестирование

MindQuantum использует Pytest для написания модульных тестов. Рекомендуется, чтобы разработчики создавали соответствующие модульные тесты после реализации новой функции или модуля, чтобы гарантировать нормальное функционирование этой функции.

Написание документации

В MindQuantum есть два основных типа документации:

  1. Документация для пользователей: эти документы доступны пользователям на веб-сайте MindSpore Quantum и включают в себя руководства по построению схем, работе с симулятором и реализации алгоритмов, которые помогают быстро начать работу с MindQuantum и изучить квантовые вычисления.
  2. Документация для разработчиков: документация для разработчиков находится в репозитории кода MindQuantum/docs. Если вы заинтересованы в добавлении новой документации для разработчиков, ознакомьтесь с соответствующей страницей на вики, узнайте о лучших практиках и своевременно создавайте комментарии после написания кода. API формируется на основе извлечённых комментариев из кода.

Процесс вклада

Стиль кода

Рекомендуется следовать этому стилю, чтобы облегчить проверку, обслуживание и разработку MindSpore Quantum командой.

  • Руководство по кодированию: сообщество MindSpore использует стиль кодирования PEP 8 для Python и стиль кодирования Google C++ (https://google.github.io/styleguide/cppguide.html). Рекомендуется установить следующие плагины в IDE для проверки формата кода: CppLint (https://github.com/cpplint/cpplint), CppCheck (http://cppcheck.sourceforge.net), CMakeLint (https://github.com/cmake-lint/cmake-lint), CodeSpell (https://github.com/codespell-project/codespell), Lizard (http://www.lizard.ws), ShellCheck (https://github.com/koalaman/shellcheck) и PyLint (https://pylint.org).
  • Руководство по модульному тестированию: сообщество MindSpore использует фреймворк Python для модульного тестирования Pytest (http://www.pytest.org/en/latest/). Комментарии к тестам должны отражать цель теста.
  • Руководство по рефакторингу: мы поощряем разработчиков реорганизовывать наш код, чтобы устранить «плохой вкус» кода (https://ru.wikipedia.org/wiki/Код_с_дурным_запахом). Все коды должны соответствовать стилю кодирования и стилю тестирования, включая реорганизованный код. Без комментариев к строкам кода (nloc) порог Lizard составляет 100, а порог сложности слияния (cnc) — 20. Когда Lizard выдаёт предупреждение, необходимо реорганизовать код перед объединением.
  • Руководство по документации: мы используем MarkdownLint для проверки форматирования документов Markdown. MindSpore CI модифицировал следующие правила на основе стандартной конфигурации:
    • MD007 (отступ неупорядоченного списка): параметр indent установлен на 4, что означает, что все элементы неупорядоченного списка должны быть с отступом в 4 пробела.
    • MD009 (пробелы в конце строки): параметр br_spaces установлен на 2, что означает, что в конце строки может быть 0 или 2 пробела.
    • MD029 (порядковые номера упорядоченных списков): параметр style установлен на ordered, что означает восходящий порядок.

Для получения дополнительной информации см. правила (https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md).

Модель разработки Fork-Pull

  • Форк репозитория MindSpore: перед отправкой кода в проект MindSpore рекомендуется создать форк этого проекта в своём собственном репозитории. Возможно параллельное развитие между репозиторием MindSpore и вашим собственным репозиторием, поэтому обратите внимание на согласованность между ними.
  • Клонирование удалённого репозитория: если вы хотите загрузить код на свой локальный компьютер, лучше всего использовать метод Git:
# На Gitee
git clone https://gitee.com/{insert_your_forked_repo}/mindquantum.git
  • Разработка локального кода: чтобы избежать несогласованности ветвей, рекомендуется переключиться на новую ветку:
git checkout -b {имя новой ветки} origin/master

Например, если MindSpore Quantum необходимо создать ветви версий и ветви разработки нижестоящих систем, сначала исправьте ошибки вышестоящей системы, затем измените код.

  • Отправка кода в удалённый репозиторий: после обновления кода отправьте изменения в удалённый репозиторий официальным способом:
git add .
git status # Просмотр статуса обновления.
git commit -m "Ваш заголовок commit"
git commit -s --amend # Добавить конкретное описание commit, необязательно.
git push origin {имя новой ветки}
  • Создание PR для отправки в репозиторий MindSpore Quantum: на последнем шаге вам нужно перейти в раздел Pull Requests вашего репозитория, создать новый PR, выбрать исходную и целевую ветви и сравнить обновлённый код. После создания PR комментарий будет содержать подсказку от i-robot. Если это ваш первый PR, появится метка mindspore-cla/no, и i-robot предложит вам подписать соглашение о лицензировании участников. Если вы уже подписали его, появится метка mindspore-cla/yes. Затем введите /retest в разделе комментариев, чтобы запустить систему блокировки дверей Jenkins CI для компиляции, сборки, проверки синтаксиса кода и других связанных тестов, чтобы обеспечить качество входящего кода. Как быстро получить ответ по issue

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

Как отправить PR

  1. Выскажите свою идею через issue на Gitee.
  2. Если это новая функция, требующая детального проектирования, предоставьте проектное решение.
  3. После обсуждения и оценки проектного решения достигните консенсуса, разработайте код в разветвлённом репозитории и отправьте PR.
  4. Любой PR должен иметь как минимум две метки LGTM от проверяющих. Обратите внимание, что проверяющие не могут добавлять метку LGTM к своим собственным PR.
  5. После тщательного обсуждения объедините, отклоните или отклоните PR в соответствии с результатами обсуждения.

Советы по PR:

  • Избегайте внесения нерелевантных изменений.
  • Обеспечьте упорядоченность истории коммитов.
  • Убедитесь, что ваша ветка всегда синхронизирована с основной веткой.
  • В PR для исправления ошибок убедитесь, что все связанные проблемы связаны.

Проверка кода перед отправкой

Во время разработки рекомендуется использовать функцию pre-push для проверки кода локально. Это позволяет провести сканирование кода, аналогичное этапу Code Check в CI, и повысить вероятность успешного прохождения проверки при отправке в репозиторий. Подробные инструкции см. в кратком руководстве по pre-push.

После завершения разработки рекомендуется использовать функции форматирования в vscode или pycharm для стандартизации стиля кода.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mindspore-mindquantum.git
git@api.gitlife.ru:oschina-mirror/mindspore-mindquantum.git
oschina-mirror
mindspore-mindquantum
mindspore-mindquantum
master