{"id":18005641,"url":"https://github.com/kuixu/keras_multi_gpu","last_synced_at":"2025-10-29T10:23:02.023Z","repository":{"id":89422482,"uuid":"90771848","full_name":"kuixu/keras_multi_gpu","owner":"kuixu","description":"Multi-GPU training for Keras","archived":false,"fork":false,"pushed_at":"2017-06-23T14:27:07.000Z","size":293,"stargazers_count":44,"open_issues_count":2,"forks_count":22,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-21T15:42:30.829Z","etag":null,"topics":["data-parallelism","keras","multi-gpu"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kuixu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-09T17:13:16.000Z","updated_at":"2023-01-07T19:18:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"2eae8239-7439-4ff0-ae35-fa20dfdcc54f","html_url":"https://github.com/kuixu/keras_multi_gpu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuixu%2Fkeras_multi_gpu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuixu%2Fkeras_multi_gpu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuixu%2Fkeras_multi_gpu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuixu%2Fkeras_multi_gpu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuixu","download_url":"https://codeload.github.com/kuixu/keras_multi_gpu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245637185,"owners_count":20648105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-parallelism","keras","multi-gpu"],"created_at":"2024-10-30T00:20:56.125Z","updated_at":"2025-10-08T06:59:50.310Z","avatar_url":"https://github.com/kuixu.png","language":"Python","readme":"# Keras_Multi_GPU\nMulti-GPU training for Keras\n\n# Usage\n\n```python\nfrom multi_gpu import to_multi_gpu\n\n# Add the one line code before model.compile()\nmodel = to_multi_gpu(model,n_gpus=4) \n```\n\n\u003cimg src=\"./keras_multi_gpu.png\" width = \"560\" height = \"380\" alt=\"keras_multi_gpu\" align=\"center\" /\u003e\n\n\n# Example\n\nEnvironment:\n  - Keras-2.0.4\n  - Tensorflow-1.1.0\n  - Ubuntu 14.04\n  - 1080Ti, K80\n\nTest on 2 1080Ti GPUs with:\n```python\nmodel = to_multi_gpu(model,n_gpus=2) \n```\n\n\n```\n$ CUDA_VISIBLE_DEVICES=0,1 python mnist_cnn.py\n\n60000/60000 [==============================] - 9s - loss: 0.3368 - acc: 0.8978 - val_loss: 0.0734 - val_acc: 0.9768\nEpoch 2/12\n60000/60000 [==============================] - 5s - loss: 0.1134 - acc: 0.9660 - val_loss: 0.0518 - val_acc: 0.9837\nEpoch 3/12\n60000/60000 [==============================] - 5s - loss: 0.0850 - acc: 0.9746 - val_loss: 0.0419 - val_acc: 0.9856\nEpoch 4/12\n60000/60000 [==============================] - 5s - loss: 0.0709 - acc: 0.9794 - val_loss: 0.0364 - val_acc: 0.9870\nEpoch 5/12\n60000/60000 [==============================] - 5s - loss: 0.0626 - acc: 0.9816 - val_loss: 0.0328 - val_acc: 0.9892\nEpoch 6/12\n60000/60000 [==============================] - 5s - loss: 0.0576 - acc: 0.9828 - val_loss: 0.0316 - val_acc: 0.9888\nEpoch 7/12\n60000/60000 [==============================] - 5s - loss: 0.0503 - acc: 0.9845 - val_loss: 0.0300 - val_acc: 0.9896\nEpoch 8/12\n60000/60000 [==============================] - 5s - loss: 0.0461 - acc: 0.9866 - val_loss: 0.0305 - val_acc: 0.9897\nEpoch 9/12\n60000/60000 [==============================] - 5s - loss: 0.0446 - acc: 0.9864 - val_loss: 0.0269 - val_acc: 0.9905\nEpoch 10/12\n60000/60000 [==============================] - 5s - loss: 0.0422 - acc: 0.9865 - val_loss: 0.0266 - val_acc: 0.9911\nEpoch 11/12\n60000/60000 [==============================] - 5s - loss: 0.0393 - acc: 0.9886 - val_loss: 0.0288 - val_acc: 0.9906\nEpoch 12/12\n60000/60000 [==============================] - 5s - loss: 0.0373 - acc: 0.9889 - val_loss: 0.0292 - val_acc: 0.9906\nTest loss: 0.0291657444344\nTest accuracy: 0.9906\n\nreal    1m16.904s\nuser    2m30.140s\nsys     0m35.792s\n```\n\n\n\nTest on 4 K80 GPUs with:\n```python\nmodel = to_multi_gpu(model,n_gpus=4) \n```\n\n\n```\n$ CUDA_VISIBLE_DEVICES=0,1,2,3 python mnist_cnn.py\n\n60000/60000 [==============================] - 11s - loss: 0.3432 - acc: 0.8956 - val_loss: 0.0774 - val_acc: 0.9766\nEpoch 2/12\n60000/60000 [==============================] - 7s - loss: 0.1151 - acc: 0.9656 - val_loss: 0.0540 - val_acc: 0.9825\nEpoch 3/12\n60000/60000 [==============================] - 7s - loss: 0.0873 - acc: 0.9746 - val_loss: 0.0448 - val_acc: 0.9849\nEpoch 4/12\n60000/60000 [==============================] - 7s - loss: 0.0696 - acc: 0.9793 - val_loss: 0.0390 - val_acc: 0.9866\nEpoch 5/12\n60000/60000 [==============================] - 7s - loss: 0.0626 - acc: 0.9820 - val_loss: 0.0351 - val_acc: 0.9886\nEpoch 6/12\n60000/60000 [==============================] - 7s - loss: 0.0545 - acc: 0.9841 - val_loss: 0.0328 - val_acc: 0.9888\nEpoch 7/12\n60000/60000 [==============================] - 7s - loss: 0.0503 - acc: 0.9847 - val_loss: 0.0334 - val_acc: 0.9897\nEpoch 8/12\n60000/60000 [==============================] - 7s - loss: 0.0458 - acc: 0.9868 - val_loss: 0.0303 - val_acc: 0.9891\nEpoch 9/12\n60000/60000 [==============================] - 7s - loss: 0.0428 - acc: 0.9870 - val_loss: 0.0290 - val_acc: 0.9903\nEpoch 10/12\n60000/60000 [==============================] - 7s - loss: 0.0422 - acc: 0.9877 - val_loss: 0.0301 - val_acc: 0.9905\nEpoch 11/12\n60000/60000 [==============================] - 7s - loss: 0.0388 - acc: 0.9880 - val_loss: 0.0295 - val_acc: 0.9902\nEpoch 12/12\n60000/60000 [==============================] - 7s - loss: 0.0377 - acc: 0.9891 - val_loss: 0.0281 - val_acc: 0.9910\nTest loss: 0.0280628399889\nTest accuracy: 0.991\n\nreal    1m49.362s\nuser    4m58.328s\nsys     0m57.112s\n```\n\nTest on one K80 GPU with:\n\n```python\nmodel = to_multi_gpu(model,n_gpus=1) \n```\n\n```\n$ CUDA_VISIBLE_DEVICES=0 python mnist_cnn.py\n\n60000/60000 [==============================] - 15s - loss: 0.3335 - acc: 0.8989 - val_loss: 0.0744 - val_acc: 0.9765\nEpoch 2/12\n60000/60000 [==============================] - 10s - loss: 0.1163 - acc: 0.9660 - val_loss: 0.0530 - val_acc: 0.9829\nEpoch 3/12\n60000/60000 [==============================] - 10s - loss: 0.0856 - acc: 0.9747 - val_loss: 0.0427 - val_acc: 0.9851\nEpoch 4/12\n60000/60000 [==============================] - 10s - loss: 0.0733 - acc: 0.9777 - val_loss: 0.0384 - val_acc: 0.9873\nEpoch 5/12\n60000/60000 [==============================] - 10s - loss: 0.0646 - acc: 0.9810 - val_loss: 0.0380 - val_acc: 0.9872\nEpoch 6/12\n60000/60000 [==============================] - 10s - loss: 0.0577 - acc: 0.9833 - val_loss: 0.0326 - val_acc: 0.9886\nEpoch 7/12\n60000/60000 [==============================] - 10s - loss: 0.0522 - acc: 0.9845 - val_loss: 0.0321 - val_acc: 0.9885\nEpoch 8/12\n60000/60000 [==============================] - 10s - loss: 0.0472 - acc: 0.9860 - val_loss: 0.0314 - val_acc: 0.9892\nEpoch 9/12\n60000/60000 [==============================] - 10s - loss: 0.0448 - acc: 0.9868 - val_loss: 0.0300 - val_acc: 0.9898\nEpoch 10/12\n60000/60000 [==============================] - 10s - loss: 0.0415 - acc: 0.9876 - val_loss: 0.0307 - val_acc: 0.9898\nEpoch 11/12\n60000/60000 [==============================] - 10s - loss: 0.0399 - acc: 0.9882 - val_loss: 0.0309 - val_acc: 0.9896\nEpoch 12/12\n60000/60000 [==============================] - 10s - loss: 0.0371 - acc: 0.9889 - val_loss: 0.0301 - val_acc: 0.9901\nTest loss: 0.0301153413276\nTest accuracy: 0.9901\n\nreal    2m20.542s\nuser    2m13.728s\nsys     0m22.752s\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuixu%2Fkeras_multi_gpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuixu%2Fkeras_multi_gpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuixu%2Fkeras_multi_gpu/lists"}