buildz 0.6.60__tar.gz → 0.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {buildz-0.6.60/buildz.egg-info → buildz-0.7.0}/PKG-INFO +1 -1
- {buildz-0.6.60 → buildz-0.7.0}/buildz/__init__.py +1 -1
- buildz-0.7.0/buildz/gpuz/test/analyze.py +129 -0
- buildz-0.7.0/buildz/gpuz/test/report.txt +52 -0
- buildz-0.7.0/buildz/gpuz/test/take_gpu_mem.py +45 -0
- buildz-0.7.0/buildz/gpuz/test/test_linear_demo.py +86 -0
- buildz-0.7.0/buildz/gpuz/test/test_resnet.py +179 -0
- buildz-0.7.0/buildz/gpuz/test/test_resnet_demo.py +104 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/gpuz/torch/__init__.py +3 -2
- buildz-0.7.0/buildz/gpuz/torch/dict_middle.py +156 -0
- buildz-0.6.60/buildz/gpuz/torch/middlez.py → buildz-0.7.0/buildz/gpuz/torch/seq_middle.py +5 -1
- {buildz-0.6.60 → buildz-0.7.0/buildz.egg-info}/PKG-INFO +1 -1
- {buildz-0.6.60 → buildz-0.7.0}/buildz.egg-info/SOURCES.txt +7 -4
- {buildz-0.6.60 → buildz-0.7.0}/setup.py +1 -1
- buildz-0.6.60/buildz/gpuz/test/report.txt +0 -50
- buildz-0.6.60/buildz/gpuz/test/test_middle.py +0 -118
- buildz-0.6.60/buildz/gpuz/test/test_middle_conv.py +0 -118
- buildz-0.6.60/buildz/gpuz/test/test_middle_conv1.py +0 -120
- {buildz-0.6.60 → buildz-0.7.0}/LICENSE +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/MANIFEST.in +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/README.md +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/__main__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/argz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/callz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/conf_argz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/conf_callz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/evalx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz/test_call.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/argz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/build.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/callz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/evalx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/test_obj.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/tests/conf.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/argz_bk/testx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/cache.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/config.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/dbs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/deal_list.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/deal_type.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/defs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/factory.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/log.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/request.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/run.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/save.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/cache/cache.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/config/base.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/config/config.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/data/fp.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/data/item1.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/data/item2.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/res/data/test.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/test/xtest.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/auto/verify.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/cachez/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/cachez/cache.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/cmd.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/confz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/__main__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/basez.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/orm.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/postgresqlz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/sqlite3z.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/install.txt +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/run.conf +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/runz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/db/tls.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/dz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/dz/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/evalz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/evalz/evalz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/evalz/res/default.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/evalz/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/fz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/fz/fio.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/html/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/html/test/demo.html +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/html/test/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/html/xml.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/conf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/confs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/decorator.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/loads.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc/single.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/obj.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/ref.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/refs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/var.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/ioc/wrap.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf/conf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf/unit.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf/up.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/attr.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/call.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/cvar.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/env.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/ioc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/method.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/obj.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/ref.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/conf_deal/val.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/builds.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/confs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/datas.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/dataset.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/encapes.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/envs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/ids.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/init.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/single.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/sys_envs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/tdata.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/tdict.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/unit.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc/vars.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/deal.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/ioc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/obj.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/ref.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/ioc_deal/val.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/test/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/wrap/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/wrap/default_wraps.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/wrap/env.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/wrap/obj.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/iocz/wrap/wraps.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/logz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/caps.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/gateway.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/mhttp.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/mhttps.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/proxy.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/mhttp/record.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/sslz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/sslz/gen.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/sslz/gen.pyi +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/test/__main__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/test/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/test/test_cli.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/netz/test/test_gw.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/pathz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/pyz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tls.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tools.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/test_xfind.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/time/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/time/timez.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/tz/xfind.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/code.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/file.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/buffer.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/spc.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/strz_new.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/deal/strz_old.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/exp.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/item.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/pos.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/loaderz_nexp/test1.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/read.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/readz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/readz_nexp.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/stack.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/write.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/listmapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/base.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/conf.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/jsonval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/listmapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/listz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/mapz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/reval.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/deal/strz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/itemz.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/mg.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writerz/testx.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/writez.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xz/__init__.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xz/conf.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xz/data.js +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xz/test.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz/xz/trs.py +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/notes/notes.txt +0 -0
- {buildz-0.6.60 → buildz-0.7.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: buildz
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.7.0
|
4
4
|
Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
|
5
5
|
Home-page: https://github.com/buildCodeZ/buildz
|
6
6
|
Author: Zzz
|
@@ -0,0 +1,129 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
import sys
|
4
|
+
from buildz.gpuz.torch import DictCache
|
5
|
+
import torch,time
|
6
|
+
from torch import nn,optim
|
7
|
+
cpu = torch.device('cpu')
|
8
|
+
cuda = cpu
|
9
|
+
if torch.cuda.is_available():
|
10
|
+
cuda = torch.device('cuda')
|
11
|
+
def sz(tensor):
|
12
|
+
return tensor.element_size()*tensor.nelement()
|
13
|
+
def unit_sz(net):
|
14
|
+
rst = 0
|
15
|
+
for key in "weight,bias".split(","):
|
16
|
+
if hasattr(net, key):
|
17
|
+
rst+=sz(getattr(net,key))
|
18
|
+
return rst
|
19
|
+
|
20
|
+
pass
|
21
|
+
dvs = [cpu,cuda]
|
22
|
+
def show_size(sz):
|
23
|
+
u = None
|
24
|
+
for unit in "B,KB,MB,GB".split(","):
|
25
|
+
u=unit
|
26
|
+
if sz<256:
|
27
|
+
break
|
28
|
+
sz = sz/1024
|
29
|
+
return sz, unit
|
30
|
+
|
31
|
+
def default_fc_opt(net, opt):
|
32
|
+
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
33
|
+
opt.step()
|
34
|
+
def analyze(use_cache, use_cuda, mark_train, loop, fc_gen, dataloader, loss_fn, fc_opt, win_size):
|
35
|
+
mds, gmodel, opts, gopt = fc_gen()
|
36
|
+
dv = cuda
|
37
|
+
if not use_cuda:
|
38
|
+
use_cache = False
|
39
|
+
cache = None
|
40
|
+
if use_cache:
|
41
|
+
cache = DictCache([cuda, cpu], mds, opts, win_size, fc_opt)
|
42
|
+
if not use_cuda:
|
43
|
+
dv = cpu
|
44
|
+
gmodel = gmodel.to(dv)
|
45
|
+
s_val = "mean loss"
|
46
|
+
if mark_train:
|
47
|
+
if not use_cache:
|
48
|
+
gmodel.train()
|
49
|
+
else:
|
50
|
+
[md.train() for md in mds]
|
51
|
+
else:
|
52
|
+
s_val = "mean value"
|
53
|
+
if not use_cache:
|
54
|
+
gmodel.eval()
|
55
|
+
else:
|
56
|
+
[md.eval() for md in mds]
|
57
|
+
times = []
|
58
|
+
for i in range(loop):
|
59
|
+
total_loss = 0
|
60
|
+
curr=time.time()
|
61
|
+
if mark_train:
|
62
|
+
for dt in dataloader:
|
63
|
+
dt=dt.to(dv)
|
64
|
+
if not use_cache:
|
65
|
+
gopt.zero_grad()
|
66
|
+
out = gmodel(dt)
|
67
|
+
loss = loss_fn(out, dt)
|
68
|
+
loss.backward()
|
69
|
+
fc_opt(gmodel, gopt)
|
70
|
+
else:
|
71
|
+
[opt.zero_grad() for opt in opts] #写gopt.zero_grad()应该也可以,只是删掉之前计算的梯度
|
72
|
+
out = cache.do_forward(lambda :gmodel(dt)) # 其实只是加了勾子函数,实际的计算还是模型计算
|
73
|
+
loss = loss_fn(out, dt)
|
74
|
+
cache.do_backward(lambda : loss.backward()) # 加勾子函数
|
75
|
+
total_loss+=loss.item()
|
76
|
+
else:
|
77
|
+
with torch.no_grad():
|
78
|
+
for dt in dataloader:
|
79
|
+
dt=dt.to(dv)
|
80
|
+
if not use_cache:
|
81
|
+
out = gmodel(dt)
|
82
|
+
else:
|
83
|
+
out = cache.do_forward(lambda :gmodel(dt)) # 其实只是加了勾子函数,实际的计算还是模型
|
84
|
+
total_loss+=out.mean().item()
|
85
|
+
sec = time.time()-curr
|
86
|
+
print(" train:", i, s_val+":", total_loss/len(dataloader), "time:", sec)
|
87
|
+
times.append(sec)
|
88
|
+
# 清理显存
|
89
|
+
del gmodel, gopt, mds, opts
|
90
|
+
torch.cuda.empty_cache()
|
91
|
+
return times
|
92
|
+
|
93
|
+
def analyzes(mark_train, loop, fc_gen, dataloader, loss_fn = None, fc_opt = None, win_size=3, modes = ['cuda', 'cache','cpu']):
|
94
|
+
'''
|
95
|
+
mds, gmodel, opts, gopt = fc_gen()
|
96
|
+
'''
|
97
|
+
if type(modes)==str:
|
98
|
+
modes = modes.split(",")
|
99
|
+
if loss_fn is None:
|
100
|
+
loss_fn = torch.nn.MSELoss()
|
101
|
+
if fc_opt is None:
|
102
|
+
fc_opt = default_fc_opt
|
103
|
+
if 'gpu' in modes:
|
104
|
+
modes = list(modes)+['cuda']
|
105
|
+
# 正常做法:只用显卡
|
106
|
+
if 'cuda' in modes:
|
107
|
+
print("No Used DictCache")
|
108
|
+
gtimes = analyze(False, True, mark_train, loop, fc_gen, dataloader, loss_fn, fc_opt, win_size)
|
109
|
+
gtimes = gtimes[1:] # 第一次计算因为加载cuda一些东西会比较慢,不计算在内
|
110
|
+
torch.cuda.empty_cache()
|
111
|
+
# 显卡不足的时候:模型只在计算的时候存入显卡显存
|
112
|
+
if 'cache' in modes:
|
113
|
+
print("Using DictCache:")
|
114
|
+
dc_times = analyze(True, True, mark_train, loop, fc_gen, dataloader, loss_fn, fc_opt, win_size)
|
115
|
+
dc_times = dc_times[1:]
|
116
|
+
torch.cuda.empty_cache()
|
117
|
+
# 不用显卡,只用CPU
|
118
|
+
if 'cpu' in modes:
|
119
|
+
print("Using CPU:")
|
120
|
+
cpu_times = analyze(False, False, mark_train, loop, fc_gen, dataloader, loss_fn, fc_opt, win_size)
|
121
|
+
cpu_times = cpu_times[1:]
|
122
|
+
torch.cuda.empty_cache()
|
123
|
+
print(f"\nAnalyze")
|
124
|
+
if 'cuda' in modes:
|
125
|
+
print(f" mean time cost not used DictCache: {sum(gtimes)/len(gtimes)} sec")
|
126
|
+
if 'cache' in modes:
|
127
|
+
print(f" mean time cost using DictCache: {sum(dc_times)/len(dc_times)} sec")
|
128
|
+
if 'cpu' in modes:
|
129
|
+
print(f" mean time cost using CPU: {sum(cpu_times)/len(cpu_times)} sec")
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
测试结果:
|
3
|
+
结论是:大概能达到纯显卡(75W,更高的没测)二分之一或三分之一的性能,显存不够的可以用用,主要是卷积层,卷积层cpu计算耗时很大,并且神经网络参数相对较少,线性层感觉cpu和显卡本来就差不太多
|
4
|
+
|
5
|
+
环境:
|
6
|
+
笔记本(游戏本)
|
7
|
+
显卡: RTX4060 8GB 75W残血版
|
8
|
+
CPU: i7-13700H
|
9
|
+
内存: 16GB
|
10
|
+
|
11
|
+
1)线性层:
|
12
|
+
训练模式:
|
13
|
+
python -m buildz.gpuz.test.test_linear_demo train cuda,cache,cpu
|
14
|
+
结果:
|
15
|
+
data size: 0.457763671875 MB
|
16
|
+
Model Size: 1.7890334129333496 GB
|
17
|
+
Analyze
|
18
|
+
mean time cost not used DictCache: 4.274392604827881 sec
|
19
|
+
mean time cost using DictCache: 4.48450231552124 sec
|
20
|
+
mean time cost using CPU: 24.141416311264038 sec
|
21
|
+
|
22
|
+
用不用DictCache耗时都是4秒左右,猜测是因为显存足够,显存里自己做了缓存
|
23
|
+
先占掉4GB显存再测试:
|
24
|
+
占用4GB显存(开另一个命令行窗口执行)
|
25
|
+
python -m buildz.gpuz.test.take_gpu_mem 20
|
26
|
+
时间测试(去掉cuda是因为显存不够,全部用cuda会直接报错显存不足,根本用不了):
|
27
|
+
python -m buildz.gpuz.test.test_linear_demo train cache,cpu
|
28
|
+
Analyze
|
29
|
+
mean time cost using DictCache: 12.55063670873642 sec
|
30
|
+
mean time cost using CPU: 23.80371403694153 sec
|
31
|
+
|
32
|
+
用DictCache要12.6秒左右,性能推测是全部用显存的1/3,但起码比CPU快
|
33
|
+
|
34
|
+
测试模式:
|
35
|
+
python -m buildz.gpuz.test.test_linear_demo eval cuda,cache,cpu
|
36
|
+
Analyze
|
37
|
+
mean time cost not used DictCache: 0.022499561309814453 sec
|
38
|
+
mean time cost using DictCache: 1.3205116987228394 sec
|
39
|
+
mean time cost using CPU: 0.3452974557876587 sec
|
40
|
+
|
41
|
+
测试模式DictCache比CPU还慢,没啥好说的,以测试结果为准,结论是测试模式线性层有显存用显存,没显存用CPU,尽量别用DictCache,猜测是因为测试模式下每个小模型的计算量很小,速度很快,这时候就显得显存和内存之间的传输很消耗时间
|
42
|
+
|
43
|
+
2)卷积层:
|
44
|
+
python -m buildz.gpuz.test.test_resnet_demo train cuda,cache,cpu
|
45
|
+
结果:
|
46
|
+
data size: 60.0 MB
|
47
|
+
Model Size: 2.75390625 MB
|
48
|
+
Analyze
|
49
|
+
mean time cost not used DictCache: 4.0497170554267035 sec
|
50
|
+
mean time cost using DictCache: 8.11503267288208 sec
|
51
|
+
mean time cost using CPU: 60.47528860304091 sec
|
52
|
+
CPU模式下卷积一直很慢,另外别看模型参数很小,全放显存的时候8GB显卡直接占满了
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
import sys
|
3
|
+
from buildz.gpuz.test.test_linear_demo import *
|
4
|
+
def test():
|
5
|
+
'''
|
6
|
+
占显存用的,直接从test_linear_demo import代码过来完事,调用:
|
7
|
+
python -m buildz.gpuz.test.take_gpu_mem
|
8
|
+
或
|
9
|
+
python -m buildz.gpuz.test.take_gpu_mem num
|
10
|
+
num默认12,占用3GB显存
|
11
|
+
'''
|
12
|
+
nets=10
|
13
|
+
dims=2000
|
14
|
+
trains = 5
|
15
|
+
datas = 60
|
16
|
+
batch=30
|
17
|
+
lr=0.0001
|
18
|
+
win_size=3
|
19
|
+
num = 12
|
20
|
+
args = sys.argv[1:]
|
21
|
+
if len(args)>0:
|
22
|
+
num = int(args[0])
|
23
|
+
print(f"num: {num}")
|
24
|
+
def fc_gen():
|
25
|
+
mds = [Model(dims, nets) for i in range(num)]
|
26
|
+
mds_sz = [md.size() for md in mds]
|
27
|
+
sz, unit = analyze.show_size(sum(mds_sz))
|
28
|
+
print(f"Model Size: {sz} {unit}")
|
29
|
+
opts =[optim.Adam(md.parameters(), lr=lr) for md in mds]
|
30
|
+
gmodel = nn.Sequential(*mds)
|
31
|
+
gopt = optim.Adam(gmodel.parameters(), lr=lr)
|
32
|
+
return mds, gmodel, opts, gopt
|
33
|
+
mds,gmodel,opts,gop=fc_gen()
|
34
|
+
ds = TestDataset(datas, dims)
|
35
|
+
dl = DataLoader(ds, batch)
|
36
|
+
dt = list(dl)[0]
|
37
|
+
gmodel = gmodel.cuda()
|
38
|
+
with torch.no_grad():
|
39
|
+
dt=dt.cuda()
|
40
|
+
while True:
|
41
|
+
out = gmodel(dt)
|
42
|
+
print(out.mean())
|
43
|
+
time.sleep(1)
|
44
|
+
|
45
|
+
pyz.lc(locals(),test)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
import sys
|
4
|
+
from buildz.gpuz.torch import DictCache
|
5
|
+
from buildz.gpuz.test import analyze
|
6
|
+
from buildz import pyz
|
7
|
+
import torch,time
|
8
|
+
from torch import nn,optim
|
9
|
+
from torch.utils.data import DataLoader, Dataset
|
10
|
+
cpu,cuda = analyze.dvs
|
11
|
+
class Model(nn.Module):
|
12
|
+
def __init__(self, dims, num):
|
13
|
+
super().__init__()
|
14
|
+
nets=[]
|
15
|
+
for i in range(num):
|
16
|
+
nets.append(nn.Linear(dims,dims))
|
17
|
+
nets.append(nn.LeakyReLU())
|
18
|
+
self.nets = nn.Sequential(*nets)
|
19
|
+
def forward(self, inputs):
|
20
|
+
return self.nets(inputs)
|
21
|
+
def size(self):
|
22
|
+
return sum([analyze.unit_sz(net) for net in self.nets])
|
23
|
+
|
24
|
+
pass
|
25
|
+
class TestDataset(Dataset):
|
26
|
+
def __init__(self, n, dims):
|
27
|
+
self.n = n
|
28
|
+
self.dims = dims
|
29
|
+
self.datas = torch.rand(n, dims)
|
30
|
+
sz = analyze.sz(self.datas)
|
31
|
+
sz, unit = analyze.show_size(sz)
|
32
|
+
print(f"data size: {sz} {unit}")
|
33
|
+
def __len__(self):
|
34
|
+
return self.n
|
35
|
+
def __getitem__(self, i):
|
36
|
+
return self.datas[i]
|
37
|
+
|
38
|
+
pass
|
39
|
+
|
40
|
+
def test():
|
41
|
+
'''
|
42
|
+
这些参数是不用DictCache的时候8GB显存刚好能跑
|
43
|
+
测试显存不够用的情况,要么用其他程序占显存,要么改参数,num改大一些显存就不够用了
|
44
|
+
也提供了个占用显存的简单代码:
|
45
|
+
占用3GB显存:
|
46
|
+
python -m buildz.gpuz.test.take_gpu_mem 12
|
47
|
+
占用4GB显存:
|
48
|
+
python -m buildz.gpuz.test.take_gpu_mem 20
|
49
|
+
|
50
|
+
'''
|
51
|
+
nets=10
|
52
|
+
dims=2000
|
53
|
+
loop = 5
|
54
|
+
datas = 60
|
55
|
+
batch=30
|
56
|
+
lr=0.0001
|
57
|
+
win_size=3
|
58
|
+
args = sys.argv[1:]
|
59
|
+
mark_train = True
|
60
|
+
if len(args)>0:
|
61
|
+
mark_train = args.pop(0).lower()=='train'
|
62
|
+
modes = 'cuda,cache,cpu'
|
63
|
+
if len(args)>0:
|
64
|
+
modes = args.pop(0)
|
65
|
+
num = 12
|
66
|
+
if len(args)>0:
|
67
|
+
num = int(args.pop(0))
|
68
|
+
print(f"num: {num}")
|
69
|
+
def fc_gen():
|
70
|
+
mds = [Model(dims, nets) for i in range(num)]
|
71
|
+
mds_sz = [md.size() for md in mds]
|
72
|
+
sz, unit = analyze.show_size(sum(mds_sz))
|
73
|
+
print(f"Model Size: {sz} {unit}")
|
74
|
+
opts =[optim.Adam(md.parameters(), lr=lr) for md in mds]
|
75
|
+
gmodel = nn.Sequential(*mds)
|
76
|
+
gopt = optim.Adam(gmodel.parameters(), lr=lr)
|
77
|
+
return mds, gmodel, opts, gopt
|
78
|
+
def fc_opt(net, opt):
|
79
|
+
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
80
|
+
opt.step()
|
81
|
+
ds = TestDataset(datas, dims)
|
82
|
+
dl = DataLoader(ds, batch)
|
83
|
+
loss_fn = torch.nn.MSELoss()
|
84
|
+
analyze.analyzes(mark_train, loop, fc_gen, dl, loss_fn, fc_opt, win_size, modes)
|
85
|
+
|
86
|
+
pyz.lc(locals(),test)
|
@@ -0,0 +1,179 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
|
4
|
+
'''
|
5
|
+
测试用DictCache和不用DictCache的时候,反向梯度是否一样,代码比较杂,不建议看,测试结果是效果一致
|
6
|
+
'''
|
7
|
+
import sys
|
8
|
+
from buildz.gpuz.torch import DictCache
|
9
|
+
import torch,time
|
10
|
+
from torch import nn,optim
|
11
|
+
from torch.utils.data import DataLoader, Dataset
|
12
|
+
cpu = torch.device('cpu')
|
13
|
+
cuda = cpu
|
14
|
+
if torch.cuda.is_available():
|
15
|
+
cuda = torch.device('cuda')
|
16
|
+
def sz(tensor):
|
17
|
+
return tensor.element_size()*tensor.nelement()
|
18
|
+
class ConvModel(nn.Module):
|
19
|
+
def __init__(self, dims, num, ins_channels, middle_channels):
|
20
|
+
super().__init__()
|
21
|
+
nets=[]
|
22
|
+
for i in range(num):
|
23
|
+
nets.append(nn.Conv2d(ins_channels, middle_channels, 5, padding=2))
|
24
|
+
nets.append(nn.Conv2d(middle_channels, ins_channels, 5, padding=2))
|
25
|
+
nets.append(nn.LeakyReLU())
|
26
|
+
self.nets = nn.Sequential(*nets)
|
27
|
+
def dv(self):
|
28
|
+
return self.nets[0].bias.device
|
29
|
+
def forward(self, inputs):
|
30
|
+
return self.nets(inputs)
|
31
|
+
def size(self):
|
32
|
+
total = 0.0
|
33
|
+
for net in self.nets:
|
34
|
+
if not hasattr(net, "weight"):
|
35
|
+
continue
|
36
|
+
w = net.weight
|
37
|
+
b = net.bias
|
38
|
+
total+=sz(w)+sz(b)
|
39
|
+
return total
|
40
|
+
|
41
|
+
pass
|
42
|
+
class ResNet(nn.Module):
|
43
|
+
def __init__(self, net):
|
44
|
+
super().__init__()
|
45
|
+
self.net = net
|
46
|
+
def forward(self, inputs):
|
47
|
+
return inputs+self.net(inputs)
|
48
|
+
class TestDataset(Dataset):
|
49
|
+
def __init__(self, n, dims, channels):
|
50
|
+
self.n = n
|
51
|
+
self.dims = dims
|
52
|
+
self.datas = torch.rand(n, channels, dims,dims)
|
53
|
+
print(f"data size: {sz(self.datas)/1024/1024/1024} GB")
|
54
|
+
def __len__(self):
|
55
|
+
return self.n
|
56
|
+
def __getitem__(self, i):
|
57
|
+
return self.datas[i]
|
58
|
+
return torch.rand(self.dims)
|
59
|
+
|
60
|
+
pass
|
61
|
+
def gen(dims, nets_num, channels, middle_channels, num_conv, lr):
|
62
|
+
mds = []
|
63
|
+
base = None
|
64
|
+
for i in range(num_conv):
|
65
|
+
nets = [ConvModel(dims, nets_num, channels, middle_channels) for i in range(2)]
|
66
|
+
mds+=nets
|
67
|
+
if base is not None:
|
68
|
+
nets = [nets[0], base, nets[1]]
|
69
|
+
nets = nn.Sequential(*nets)
|
70
|
+
base = ResNet(nets)
|
71
|
+
fullnet = base
|
72
|
+
opts =[optim.Adam(md.parameters(), lr=lr) for md in mds]
|
73
|
+
gopt = optim.Adam(fullnet.parameters(), lr=lr)
|
74
|
+
return mds, fullnet, opts, gopt
|
75
|
+
def do_save(mds, gmodel, opts, gopt, fp):
|
76
|
+
save = SaveModel(gmodel=gmodel, gopt=gopt)
|
77
|
+
save.set_list("md", mds)
|
78
|
+
save.set_list("opt", opts)
|
79
|
+
save.save(fp)
|
80
|
+
def do_load(mds, gmodel, opts, gopt, fp):
|
81
|
+
save = SaveModel(gmodel=gmodel, gopt=gopt)
|
82
|
+
save.set_list("md", mds)
|
83
|
+
save.set_list("opt", opts)
|
84
|
+
save.load(fp)
|
85
|
+
mds = save.get_list("md")
|
86
|
+
opts = save.get_list("opt")
|
87
|
+
gmodel = save.gmodel
|
88
|
+
gopt = save.gopt
|
89
|
+
return mds, gmodel, opts, gopt
|
90
|
+
|
91
|
+
pass
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
from pyz.nn.dv import SaveModel
|
96
|
+
def fc_opt(net, opt):
|
97
|
+
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
98
|
+
opt.step()
|
99
|
+
def test():
|
100
|
+
nets=2
|
101
|
+
channels=10
|
102
|
+
middle_channels = 30
|
103
|
+
dims=64
|
104
|
+
trains = 5
|
105
|
+
datas = 6
|
106
|
+
batch=2
|
107
|
+
lr=0.0001
|
108
|
+
win_size=3
|
109
|
+
num_conv = 6
|
110
|
+
num_ln = 3
|
111
|
+
mds, gmodel, opts, gopt = gen(dims, nets, channels, middle_channels, num_conv, lr)
|
112
|
+
fp = "tmp.dt"
|
113
|
+
print(mds[0].nets[0].weight.mean(), mds[0].nets[0].bias.grad)
|
114
|
+
#do_save(mds, gmodel, opts, gopt, fp)
|
115
|
+
mds, gmodel, opts, gopt = do_load(mds, gmodel, opts, gopt, fp)
|
116
|
+
print(mds[0].nets[0].weight.mean(), mds[0].nets[0].bias.grad)
|
117
|
+
mds_sz = [md.size() for md in mds]
|
118
|
+
print(f"Model Size: {sum(mds_sz)/1024/1024/1024} GB")
|
119
|
+
#cuda=cpu
|
120
|
+
ds = TestDataset(datas, dims, channels)
|
121
|
+
dl = DataLoader(ds, batch)
|
122
|
+
#return
|
123
|
+
loss_fn = torch.nn.MSELoss()
|
124
|
+
dt = list(dl)[0].to(cuda)
|
125
|
+
dt[:] = 0.1
|
126
|
+
print("start train")
|
127
|
+
gmodel = gmodel.to(cuda)
|
128
|
+
gmodel.train()
|
129
|
+
i_mds = 3
|
130
|
+
i_nets = 1
|
131
|
+
#
|
132
|
+
for i in range(3):
|
133
|
+
out = gmodel(dt)
|
134
|
+
loss = loss_fn(out, dt)
|
135
|
+
print(f"loss: {loss, type(loss)}")
|
136
|
+
loss.backward()
|
137
|
+
print("grad:",mds[i_mds].nets[i_nets].weight.mean(), mds[i_mds].nets[i_nets].bias.grad)
|
138
|
+
gopt.zero_grad()
|
139
|
+
mds, gmodel, opts, gopt = do_load(mds, gmodel, opts, gopt, fp)
|
140
|
+
print("grad empty:", mds[i_mds].nets[i_nets].weight.mean(), mds[i_mds].nets[i_nets].bias.grad)
|
141
|
+
#return
|
142
|
+
gmodel.cpu()
|
143
|
+
torch.cuda.empty_cache()
|
144
|
+
dt[:]=0.9
|
145
|
+
input("start middle:")
|
146
|
+
md = DictCache([cuda, cpu], mds, opts, win_size, fc_opt)
|
147
|
+
[k.train() for k in mds]
|
148
|
+
[opt.zero_grad() for opt in opts]
|
149
|
+
for i in range(3):
|
150
|
+
out = md.do_forward(lambda :gmodel(dt))
|
151
|
+
loss = loss_fn(out, dt)
|
152
|
+
print(f"loss: {loss, type(loss)}")
|
153
|
+
md.do_backward(lambda : loss.backward())
|
154
|
+
print("grad:",mds[i_mds].nets[i_nets].weight.mean(), mds[i_mds].nets[i_nets].bias.grad)
|
155
|
+
[opt.zero_grad() for opt in opts]
|
156
|
+
mds, gmodel, opts, gopt = do_load(mds, gmodel, opts, gopt, fp)
|
157
|
+
print("grad empty:", mds[i_mds].nets[i_nets].weight.mean(), mds[i_mds].nets[i_nets].bias.grad)
|
158
|
+
return
|
159
|
+
seq = nn.Sequential(*mds)
|
160
|
+
[k.train() for k in mds]
|
161
|
+
#with torch.no_grad():
|
162
|
+
for i in range(trains):
|
163
|
+
total_loss = 0
|
164
|
+
curr=time.time()
|
165
|
+
for dt in dl:
|
166
|
+
dt=dt.to(cuda)
|
167
|
+
[opt.zero_grad() for opt in opts] #这一步不必也扔gpu里计算吧,直接这样写了
|
168
|
+
out = md.do_forward(lambda :seq(dt))
|
169
|
+
loss = loss_fn(out, dt)
|
170
|
+
print(f"loss: {loss, type(loss)}")
|
171
|
+
md.do_backward(lambda : loss.backward())
|
172
|
+
total_loss+=loss.item()
|
173
|
+
sec = time.time()-curr
|
174
|
+
print("train:", i, "loss:", total_loss/len(dl), "time:", sec)
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
pass
|
179
|
+
test()
|
@@ -0,0 +1,104 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
import sys
|
4
|
+
from buildz.gpuz.torch import DictCache
|
5
|
+
from buildz.gpuz.test import analyze
|
6
|
+
from buildz import pyz
|
7
|
+
import torch,time
|
8
|
+
from torch import nn,optim
|
9
|
+
from torch.utils.data import DataLoader, Dataset
|
10
|
+
cpu,cuda = analyze.dvs
|
11
|
+
class ConvModel(nn.Module):
|
12
|
+
def __init__(self, dims, num, ins_channels, middle_channels):
|
13
|
+
super().__init__()
|
14
|
+
nets=[]
|
15
|
+
for i in range(num):
|
16
|
+
nets.append(nn.Conv2d(ins_channels, middle_channels, 5, padding=2))
|
17
|
+
nets.append(nn.Conv2d(middle_channels, ins_channels, 5, padding=2))
|
18
|
+
nets.append(nn.LeakyReLU())
|
19
|
+
self.nets = nn.Sequential(*nets)
|
20
|
+
def forward(self, inputs):
|
21
|
+
return self.nets(inputs)
|
22
|
+
def size(self):
|
23
|
+
return sum([analyze.unit_sz(net) for net in self.nets])
|
24
|
+
|
25
|
+
pass
|
26
|
+
class ResNet(nn.Module):
|
27
|
+
def __init__(self, net):
|
28
|
+
super().__init__()
|
29
|
+
self.net = net
|
30
|
+
def forward(self, inputs):
|
31
|
+
return inputs+self.net(inputs)
|
32
|
+
class TestDataset(Dataset):
|
33
|
+
def __init__(self, n, dims, channels):
|
34
|
+
self.n = n
|
35
|
+
self.dims = dims
|
36
|
+
self.datas = torch.rand(n, channels, dims,dims)
|
37
|
+
sz = analyze.sz(self.datas)
|
38
|
+
sz, unit = analyze.show_size(sz)
|
39
|
+
print(f"data size: {sz} {unit}")
|
40
|
+
def __len__(self):
|
41
|
+
return self.n
|
42
|
+
def __getitem__(self, i):
|
43
|
+
return self.datas[i]
|
44
|
+
|
45
|
+
pass
|
46
|
+
def gen(dims, nets_num, channels, middle_channels, num_conv, lr):
|
47
|
+
"""
|
48
|
+
类似UNet的模型
|
49
|
+
"""
|
50
|
+
mds = []
|
51
|
+
base = None
|
52
|
+
for i in range(num_conv):
|
53
|
+
nets = [ConvModel(dims, nets_num, channels, middle_channels) for i in range(2)]
|
54
|
+
mds+=nets
|
55
|
+
if base is not None:
|
56
|
+
nets = [nets[0], base, nets[1]]
|
57
|
+
nets = nn.Sequential(*nets)
|
58
|
+
base = ResNet(nets)
|
59
|
+
fullnet = base
|
60
|
+
opts =[optim.Adam(md.parameters(), lr=lr) for md in mds]
|
61
|
+
gopt = optim.Adam(fullnet.parameters(), lr=lr)
|
62
|
+
mds_sz = [md.size() for md in mds]
|
63
|
+
sz, unit = analyze.show_size(sum(mds_sz))
|
64
|
+
print(f"Model Size: {sz} {unit}")
|
65
|
+
return mds, fullnet, opts, gopt
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
def fc_opt(net, opt):
|
70
|
+
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
71
|
+
opt.step()
|
72
|
+
def test():
|
73
|
+
nets=2
|
74
|
+
channels=10
|
75
|
+
middle_channels = 30
|
76
|
+
dims=512
|
77
|
+
loop = 10
|
78
|
+
datas = 6
|
79
|
+
batch=2
|
80
|
+
'''
|
81
|
+
如果batch改成6,不用DictCache的时候8GB显存的显卡直接报错显存不够;用DictCache并且win_size=3时需要5GB显存,训练一次9秒;用cpu则要跑很久很久很久
|
82
|
+
'''
|
83
|
+
# batch=6
|
84
|
+
lr=0.0001
|
85
|
+
win_size=3
|
86
|
+
num_conv = 12
|
87
|
+
args = sys.argv[1:]
|
88
|
+
mark_train = True
|
89
|
+
if len(args)>0:
|
90
|
+
mark_train = args.pop(0).lower()=='train'
|
91
|
+
modes = 'cuda,cache,cpu'
|
92
|
+
if len(args)>0:
|
93
|
+
modes = args.pop(0)
|
94
|
+
if len(args)>0:
|
95
|
+
num_conv = int(args.pop(0))
|
96
|
+
print(f"num_conv: {num_conv}")
|
97
|
+
ds = TestDataset(datas, dims, channels)
|
98
|
+
dl = DataLoader(ds, batch)
|
99
|
+
loss_fn = torch.nn.MSELoss()
|
100
|
+
def fc_gen():
|
101
|
+
return gen(dims, nets, channels, middle_channels, num_conv, lr)
|
102
|
+
analyze.analyzes(mark_train, loop, fc_gen, dl, loss_fn, fc_opt, win_size, 'cuda,cache,cpu')
|
103
|
+
|
104
|
+
pyz.lc(locals(),test)
|