All Projects → QPT-Family → QPT

QPT-Family / QPT

Licence: LGPL-2.1 License
[内测中]前向式Python环境快捷封装工具,快速将Python打包为EXE并添加CUDA、NoAVX等支持。

Programming Languages

python
139335 projects - #7 most used programming language
C#
18002 projects

Projects that are alternatives of or similar to QPT

lbvh
an implementation of parallel linear BVH (LBVH) on GPU
Stars: ✭ 67 (-78.25%)
Mutual labels:  gpu, cuda
bifrost
A stream processing framework for high-throughput applications.
Stars: ✭ 48 (-84.42%)
Mutual labels:  gpu, cuda
peakperf
Achieve peak performance on x86 CPUs and NVIDIA GPUs
Stars: ✭ 33 (-89.29%)
Mutual labels:  gpu, cuda
Plotoptix
Data visualisation in Python based on OptiX 7.2 ray tracing framework.
Stars: ✭ 252 (-18.18%)
Mutual labels:  gpu, cuda
Fat-Clouds
GPU Fluid Simulation with Volumetric Rendering
Stars: ✭ 81 (-73.7%)
Mutual labels:  gpu, cuda
allgebra
Base container for developing C++ and Fortran HPC applications
Stars: ✭ 14 (-95.45%)
Mutual labels:  gpu, cuda
briefmatch
BriefMatch real-time GPU optical flow
Stars: ✭ 36 (-88.31%)
Mutual labels:  gpu, cuda
Nvidia Modded Inf
Modified nVidia .inf files to run drivers on all video cards, research & telemetry free drivers
Stars: ✭ 227 (-26.3%)
Mutual labels:  gpu, cuda
cuda memtest
Fork of CUDA GPU memtest 👓
Stars: ✭ 68 (-77.92%)
Mutual labels:  gpu, cuda
FLAMEGPU2
FLAME GPU 2 is a GPU accelerated agent based modelling framework for C++ and Python
Stars: ✭ 25 (-91.88%)
Mutual labels:  gpu, cuda
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (-25.32%)
Mutual labels:  gpu, cuda
MatX
An efficient C++17 GPU numerical computing library with Python-like syntax
Stars: ✭ 418 (+35.71%)
Mutual labels:  gpu, cuda
Optix Pathtracer
Simple physically based path tracer based on Nvidia's Optix Ray Tracing Engine
Stars: ✭ 231 (-25%)
Mutual labels:  gpu, cuda
FGPU
No description or website provided.
Stars: ✭ 30 (-90.26%)
Mutual labels:  gpu, cuda
Cupoch
Robotics with GPU computing
Stars: ✭ 225 (-26.95%)
Mutual labels:  gpu, cuda
gpubootcamp
This repository consists for gpu bootcamp material for HPC and AI
Stars: ✭ 227 (-26.3%)
Mutual labels:  gpu, cuda
Bohrium
Automatic parallelization of Python/NumPy, C, and C++ codes on Linux and MacOSX
Stars: ✭ 209 (-32.14%)
Mutual labels:  gpu, cuda
Genomeworks
SDK for GPU accelerated genome assembly and analysis
Stars: ✭ 215 (-30.19%)
Mutual labels:  gpu, cuda
monolish
monolish: MONOlithic LInear equation Solvers for Highly-parallel architecture
Stars: ✭ 166 (-46.1%)
Mutual labels:  gpu, cuda
PbfVs
Implementation of Macklin, Miles, and Matthias Müller. "Position based fluids.". Visual Studio 2015 + CUDA 8.0
Stars: ✭ 100 (-67.53%)
Mutual labels:  gpu, cuda

QPT - Quick packaging tool 快捷封装工具

Downloads GitHub release (latest by date including pre-releases) GitHub forks GitHub Repo stars GitHub QQGroup

GitHub主页 | Gitee主页

QPT是一款可以“模拟”开发环境的多功能封装工具,最短只需一行命令即可将普通的Python脚本打包成EXE可执行程序,并选择性添加CUDA和NoAVX的支持,尽可能兼容更多的用户环境。

感觉还可以的话,求求了,点个Star吧

版本说明

EAP - The Early Access Program

当前版本为V1.0b2版本。更新日志

当前版本为尝鲜版本,仅具备基本功能,而且可能会有未测试出的Bug,建议在指导下投入生产环境。

使用时如发现问题,强烈建议加QQ群1128826410与我们进行交流,我们仍在更新~

  • 使用QPT的优势
    【可定制兼容方案】在打包形如PaddlePaddle深度学习Python库时也可流畅打包,通过自定义SubModule来让QPT来捕捉你的习惯。  
    【解释/命令双模式】不喜欢用命令打包也木有问题,Python语句照样可以轻松打包。  
    【轻松引入CUDA库】还担心用户不会安装CUDA吗?放心,这些QPT在打包时也考虑到了,无需用户安装也能用起CUDA。  
    【兼容大部分NoAVX平台】没有AVX慢是慢了点,但10年前的台式机就没有机会体验来自深度学习的乐趣吗?  
    【简单实用的Debug组件】QPT提供了几个实用的Debug工具以及日志系统,用户使用出现问题也可更快追踪异常情况。  
    【简约不简单的EXE】支持三种打包方式:秒安装、首次安装、在线安装三种方式,对应了三种:普通、较小、Mini三种打包体积,未来还将支持1M+大小的在线部署模块。
    
  • QPT的缺陷
    【环境模拟】由于是“模拟”开发环境,所以相较传统打包对项目的规范程度有一定要求,越规范的项目越不容易踩坑,但也提升了使用成本。  
    【依赖处理】QPT只会打包源码中出现的Python包,但如果该包的依赖部分书写不规范(当然,大部分Python包是规范的)则可能会出现依赖缺失的问题。若您没有Requirements文件,那么在QPT自动生成Requirements.txt文件后需要您确认依赖是否完备,否则可能会有依赖漏掉的情况。  
    【踩坑继承】您搭建项目时所踩下的坑,QPT在模拟时可能并不会自动打包进去,极端情况下仍需要您手动撰写SubModule来保证用户可以正常使用。 
    

*以上均以PaddlePaddle为基准,其他深度学习框架在测试版本中可能需要手动添加Module。

快速使用

安装/更新QPT到当前环境

安装

  • 通用方式:python -m pip install qpt
  • 国内推荐:python -m pip install qpt -i https://mirrors.bfsu.edu.cn/pypi/web/simple

更新 - 强烈建议先卸载后安装

  • Step1 卸载:python -m pip uninstall qpt
  • Step2 安装:python -m pip install qpt

开始打包

方式一、撰写打包脚本[推荐]

  • 撰写以下代码即可完成打包:

    # 导入QPT
    from qpt.executor import CreateExecutableModule as CEM
    
    #                                                        -----关于路径的部分,强烈建议使用绝对路径避免出现问题-----
    module = CEM(work_dir="./sample_program",                # [项目文件夹]待打包的目录,并且该目录下需要有↓下方提到的py文件
                 launcher_py_path="./sample_program/run.py", # [主程序文件]用户启动EXE文件后,QPT要执行的py文件
                 save_path="./out")                          # [输出目录]打包后相关文件的输出目录
               # requirements_file="auto"                    # [Python依赖]此处可填入依赖文件路径,也可设置为auto自动搜索依赖
               # hidden_terminal=False                       # [终端窗口]设置为True后,运行时将不会展示黑色终端窗口  
               # interpreter_module=Python37()               # [跨版本编译]需要预先from qpt.modules.python_env import Python37
                                                             # 好奇什么时候需要跨版本编译?可参考下方"进阶使用QPT"一节的《打包兼容性更强的Python解释器》
               # icon="your_ico.ico"                         # [自定义图标文件]支持将exe文件设置为ico/JPG/PNG等格式的自定义图标
    # 开始打包
    module.make()

方式二、使用命令打包[快捷]

注意:使用命令打包的前提是当前默认Python环境中使用pip安装了qpt,否则可能存在形如qpt不是内部或外部命令,也不是可运行的程序的报错信息。此外,若需要自动搜索依赖,强烈建议将QPT安装在开发环境,并且在开发环境中执行QPT,因为QPT会在搜索文件的import和pip list进行比对来确保搜索结果精确。

  • 打开cmd/终端并输入以下命令即可完成打包:

    chcp 65001
    qpt.exe -f ./sample_program -p ./sample_program/run.py -s ./out -h False

    chcp 65001 命令可使得终端转为utf-8形式,避免出现编码问题

  • 完整命令列表可使用qpt --help获取:

    Options:
      -f, --folder TEXT     [项目文件夹]待打包的文件夹路径,该目录也应当为整个项目的根目录或工作目录,否则可能会导致出现找不到模块等P
                            ython基础报错。  [required]
      -p, --py TEXT         [主程序文件]待打包的主要Py脚本文件所在的路径,例如要yyy/xxx.pyxxx.py是需要打包的主要P
                            ython文件,那么该处填写xxx.py即可。  [required]
      -s, --save TEXT       [输出目录]打包后文件保存的路径。  [required]
      -r, --require TEXT    [Python依赖]自动检测软件包依赖,填写auto后将会自动查找待打包的文件夹路径中所有py文件的impo
                            rt使用情况,最终生成requirements文件
                            当然,也可传入requirements.txt文件路径,这样即可指定依赖列表进行安装。
      -h, --hidden BOOLEAN  [终端窗口]是否隐藏全部终端窗口,若输入true或判定为真则隐藏全部Terminal窗口(适用于使用了PyQ
                            TTK等桌面级可视化程序),输入false或判定为否则不隐藏(适用于Console & 终端程序)。
      -i, --icon TEXT       [自定义图标文件]传入自定义图标文件路径,为EXE设置属于你的图标样式,支持将exe文件设置为ico/JPG/PNG等格式的自定义图标。
      --help                Show this message and exit.

进阶使用QPT

完整进阶使用文档详见examples/advanced

高阶开发手册

预计V1.0RC版本发布

设计思想

发版安排 - 随时可能咕咕咕

本项目并不是大团队维护的项目,没有组织,没有纪律,如有特殊需求可考虑PR代码,维护者并不会按照计划外的意愿进行维护,随时可能咕咕咕,故入坑需谨慎。

  • 2021.6上旬 QPT V1.0 Alpha版本发布 - 确定初始架构,保证可以凑合用
  • 2021.8 QPT V1.0 Beta版本发布 - 调整架构,完善兼容性
  • 2021.10 QPT V1.0 RC版本发布 - 增加更多基础功能
  • 2021.12 QPT V1.0 正式发布 - 完事了,开始正常发版

与其他打包工具对比 - 尚未更新最新版本测试

基准为对PaddlePaddle2.1.0版本的CPU与GPU版本以及其相关依赖进行打包,以下为与其他打包工具的对比情况。(*为省略了部分软件包名)

工具名称 打包方案 离线部署体积CPU/GPU 在线部署 是否支持CUDA加速 是否对NoAVX兼容 运行速度 加密
QPT 前向式模拟 100M+/1.2GB+ 30M+ 支持打包CUDA 兼容 快速 在做了
Pyin* 反向推理 高于QPT 不支持 需用户安装 不支持 一般 Pyd
CxFr* 反向推理 暂未测试 不支持 需用户安装 不支持 一般 Pyd
Nuit* 源码编译 暂未测试 不支持 需用户安装 不支持 快速 编译加密

其他说明

  1. QPT会在用户第一次运行时会有环境兼容性适配步骤,与其他打包工具相比会显得耗时,但随后的运行速度可接近原生开发环境。
  2. 已知Pyin*在打包时默认打包命令在打包PaddlePaddle时会有较大可能性打包失败,需要用户额外添加相关动态链接库并屏蔽部分Python包方可运行。
  3. 除QPT外,更推荐Nuit*来打包深度学习相关库,性能好且打包难度较低。
  4. NoAVX支持非常重要,当前仍有大量桌面级用户使用NoAVX平台。

社区相关

这些项目也在用

以下为内测QPT提供支持的开源项目,在此非常感谢这些作者为QPT提供的宝贵建议以及多次的调试与沟通,这也是QPT走向成熟的关键,同时也要感谢各位大佬在面对Bug时的不杀之恩。

  1. 交互式语义分割标注软件 - PaddleCV-SIG/iann
  2. 景观健康效益辅助评估工具 - JiehangXie/Landscape-Heath-Score
  3. 团子翻译器-OCR部分 - PantsuDango/Dango-Translator

社区支持

Jetbrains 全家桶支持

本项目开发所使用的IDE由Jetbrains支持。

https://jb.gg/OpenSource

来一杯咖啡

一杯咖啡提神醒脑,代码更新会更快更好!

图片

开源协议

本项目使用GNU LESSER GENERAL PUBLIC LICENSE(LGPL)开源协议。

Other情况

  1. 形如使用QPT简单打包了自己的“强化学习小游戏”等操作,该情况无需申请QPT授权以及更换个人代码仓库完整的开源协议。
  2. 若对QPT源代码进行了修改,尽管这些代码非恶意代码,但为了保证开发者和使用者权益和安全,在未取得QPT授权的情况下需要开源完整的源代码等LGPL协议中所要求的内容。
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].