Git Product home page Git Product logo

kamonohashi / kamonohashi Goto Github PK

View Code? Open in Web Editor NEW
85.0 85.0 13.0 7.74 MB

AI開発プラットフォームKAMONOHASHI

Home Page: https://kamonohashi.ai/

License: Apache License 2.0

Python 15.93% Shell 0.07% JavaScript 20.79% C# 43.78% PowerShell 0.87% HTML 0.01% Vue 18.30% CSS 0.24% Dockerfile 0.01%
deep-learning deeplearning kubernetes machine-learning machinelearning mlops nvidia-docker

kamonohashi's Introduction

KAMONOHASHI


KAMONOHASHIは、Deep Learningのモデル開発を効率的に行うためのAI開発プラットフォームです。 Deep learningのモデル開発には、複雑な環境構・計算リソースの確保・大量に発生するデータや学習履歴の管理といった、煩雑な作業が多く存在します。KAMONOHASHIはこれらの作業を削減し、AI開発者がモデル開発に集中できる環境を提供します。


Getting Started

KAMONOHASHIのインストール方法を参照してください。

Contributing

KAMONOHASHIに関するバグレポートやリクエストは、Issueの作成による報告をお願いします。

License

Apache-2.0

Contact

KAMONOHASHI についてのお問合せは、下記よりお願いします。

[email protected]

kamonohashi's People

Contributors

428s avatar 4packs avatar dependabot[bot] avatar hama1080 avatar kurage0807 avatar netresj avatar ota-hiroko avatar ozota1 avatar reiw98 avatar sekikatsu36 avatar yonetatuu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kamonohashi's Issues

ユーザ名にドット(.)が入ったアカウントで学習が実行できない

発生した現象
ユーザ名にドット(.)が入ったアカウントで学習を実行すると、「Failed to run training. The message bellow may be help to resolve: Can not access to created container. Status: Empty」と言うエラーが発生する。

再現手順
ユーザ名にドット(.)が入ったアカウントで学習を実行する。
k8sのログには「Error creating: Pod "training-1-bvv7m" is invalid: [spec.volumes[9].name: Invalid value: "(アカウント名)-token-wvz7s": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is 'a-z0-9?'), spec.containers[0].volumeMounts[9].name: Not found: "(アカウント名)-token-wvz7s", spec.containers[1].volumeMounts[9].name: Not found: "(アカウント名)-token-wvz7s", spec.initContainers[0].volumeMounts[9].name: Not found: "(アカウント名)-token-wvz7s"]」が表示される。

Error

期待する動作
学習が正常に実行開始する。

環境

  • KAMONOHASHIのバージョン: 1.0.0
  • OSとそのバージョン(ubuntu 16.04 など): Client=Windows10, Server=Ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など) : Chrome
  • CLIとそのバージョン、Pythonのバージョンと仮想環境(CLI 1.0.0 python3.5.6 conda 4.6.4 など) : 未使用

依存パッケージのバージョンアップ

KAMONOHASHIへのリクエスト
依存パッケージのバージョンアップ

Upgrade Microsoft.AspNetCore.All to version 2.1.4 or later.
Upgrade webpack-bundle-analyzer to version 3.3.2 or later.
Upgrade webpack-dev-server to version 3.1.11 or later.

#1 に関連

ユーザ情報設定画面の表示サイズが適切でない

発生した現象
ユーザ情報設定画面の表示サイズが適切な大きさではない。

  • [選択中のテナント]を表示しているが、[Sandbox]でさえ改行されてしまうため、幅が狭い
  • 画面下部には何もないが、スクロールバーが表示されるため、適切な高さになっていない

スクリーンショット、ログ
image

表示されるコミットIDが異なる

発生した現象
ブラウザにおいて、推論実行画面に表示されるモデルのコミットIDと実行されるコミットIDが異なる。

再現手順

  1. 推論実行をコピー実行する。
  2. マウントする学習を別のものに切替える。
  3. 推論実行画面のコミットIDは変化がない。
    ただし、コミット詳細を見ると別のものに差し変わっている。
  4. 実行すると差し替わったコミットIDのコードが使用される。

期待する動作
推論実行画面のコミットIDとコミット詳細のコミットIDが一致していること。
具体的には下記のいずれかを期待する。
・推論実行画面のコミットIDがコミット詳細のものに変わる。
・コミット詳細のコミットIDが推論実行画面と同じく変化しない。

環境

  • KAMONOHASHI 1.0.1
  • Windows 10 Pro 18.09
  • Google Chrome 75

スクリーンショット
kqi-bug
※個人情報などはマスクさせていただいております。

ユーザが使用できるリソース数を表示してほしい

KAMONOHASHIへのリクエスト
前処理管理、学習管理、推論管理において、
リソース表示のMAX値が以下のように固定値になっている。

  • CPU  ・・・ 200
  • メモリ ・・・ 200
  • GPU  ・・・ 16

存在しないリソース数を設定して実行した場合、リソースが不足しているため動作しない。
MAX値を対象のユーザが使用することができる上限値に変更してほしい。

ユーザからテナントを外した際、Git Tokenは残るが、Registry Tokenは消える

発生した現象
ユーザからテナントを外した際の動作についてです。

(現在の動作)
・Git Tokenは維持されている。(削除せずに残り続ける)
・Registry Tokenは削除される。

期待する動作
(動作1)
・Git Token、Registry Tokenともに削除される。

(動作2)
・Git Token、Registry Tokenともに維持される。

1.0.1のデプロイツールがnvidia-dockerのインストールで失敗する

発生した現象
1.0.1のデプロイツールがnvidia-dockerのインストールで失敗する

再現手順
1.0.1のデプロイツールを実行

期待する動作
1.0.1のデプロイツールがnvidia-dockerのインストールが成功

環境

  • KAMONOHASHIのバージョン:1.0.1
  • OSとそのバージョン(ubuntu 16.04 など): ubuntu16

スクリーンショット、ログ

failed: [gpu01] (item=['nvidia-container-runtime=2.0.0+docker18.09.6-3', 'nvidia-docker2=2.0.3+docker18.09.6-3']) => {"cache_update_time": 1561685018, "cache_updated": true, "changed": false, "item": ["nvidia-container-runtime=2.0.0+docker18.09.6-3", "nvidia-docker2=2.0.3+docker18.09.6-3"], "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\"     install 'nvidia-container-runtime=2.0.0+docker18.09.6-3' 'nvidia-docker2=2.0.3+docker18.09.6-3'' failed: E: Unable to correct problems, you have held broken packages.\n", "rc": 100, "stderr": "E: Unable to correct problems, you have held broken packages.\n", "stderr_lines": ["E: Unable to correct problems, you have held broken packages."], "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nSome packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\nThe following information may help to resolve the situation:\n\nThe following packages have unmet dependencies:\n nvidia-docker2 : Depends: docker-ce (= 5:18.09.6~3-0~ubuntu-xenial) but 5:18.09.7~3-0~ubuntu-xenial is to be installed or\n                           docker-ee (= 5:18.09.6~3-0~ubuntu-xenial) but it is not installable\n", "stdout_lines": ["Reading package lists...", "Building dependency tree...", "Reading state information...", "Some packages could not be installed. This may mean that you have", "requested an impossible situation or if you are using the unstable", "distribution that some required packages have not yet been created", "or been moved out of Incoming.", "The following information may help to resolve the situation:", "", "The following packages have unmet dependencies:", " nvidia-docker2 : Depends: docker-ce (= 5:18.09.6~3-0~ubuntu-xenial) but 5:18.09.7~3-0~ubuntu-xenial is to be installed or", "                           docker-ee (= 5:18.09.6~3-0~ubuntu-xenial) but it is not installable"]}

その他の情報

  • 先週までは構築できていた
  • kubesprayのデフォルトのdocker-ceのバージョンは18.09.5となっている。これはずっと変わっていないはず
  • 検証環境のgpu serverのdocker versionは次になっており、18.09.5でも構築できたと思われる
    • clientはkubesprayではバージョン制御されておらず、常に実行時点で最新が入る
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77
 Built:             Sat May  4 02:35:27 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.5
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       e8ff056
  Built:            Thu Apr 11 04:10:53 2019
  OS/Arch:          linux/amd64
  Experimental:     false

REST APIの公開

KAMONOHASHIにREST APIでアクセスできるように、APIリファレンスを公開してほしい

#7 を分割

リソース利用状況画面におけるユーザ名の表示が不適切

発生した現象
リソース利用状況画面のユーザ名に、本来のユーザ名が表示されていない。

再現手順
学習などを実行し、リソース利用状況画面を表示する。

期待する動作
ユーザ名が表示される。

環境
不具合を確認した環境を書いてください

  • KAMONOHASHIのバージョン:1.0.1
  • OSとそのバージョン: Windows 10
  • ブラウザとそのバージョン Chrome
  • CLIとそのバージョン、Pythonのバージョンと仮想環境: 未使用

スクリーンショット、ログ
キャプチャ

一覧画面で2人以上が同じ画面を更新した際の動作についての要望

KAMONOHASHIへのリクエスト
一覧に更新ボタンが存在する以下の画面について

  • テナントメニュー管理
  • クォータ管理
  • メニューアクセス管理

更新ボタンを押下した際、画面上の設定情報をもとにすべてのデータについて更新をかけている。

これでは、2人以上のユーザが同一画面を操作し更新ボタンを押下すると、
後から更新した人の情報がDBに設定されてしまう。

「画面表示の値」と「更新ボタン押下時の値」に差がある項目のみを更新したほうがよい。

コンテナ内でデータセットのダウンロードに失敗しても処理が続いてしまう

発生した現象
学習コンテナ内でデーダウンロード中、ネットワークエラーでデータファイルのダウンロードに失敗しました。
その際、学習がそこで止まることなく、後続の処理が実行されます。

再現手順
コンテナがデプロイされた後、コンテナからKAMONOHASHIアプリケーションサーバへの通信を遮断

期待する動作
データ不備の状態で学習が行われてしまうので、ダウンロード失敗時は学習自体も失敗として停止してほしいです。

環境

  • KAMONOHASHIのバージョン: 1.0.1
  • OSとそのバージョン(ubuntu 16.04 など): ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など): 未使用
  • CLIとそのバージョン、Pythonのバージョンと仮想環境(CLI 1.0.0 python3.5.6 conda 4.6.4 など) : Python 3.6

学習結果のZip圧縮を省略したい

KAMONOHASHIへのリクエスト
学習完了後に結果をZip圧縮する機能があるが、これをスキップするオプションを付けたい。

  • ストレージの容量が増える
  • 結果ファイルの量によっては、圧縮に長時間を要する

ただ、Zip圧縮によって結果ファイルのダウンロードが容易になるなどメリットもあるため、ユーザ側でON/OFFを切り替えられるようになるとありがたい。

ユーザ別アクセス制限

現状はテナント単位で権限管理がされているのを、ユーザ単位でもできるようにしたい

#7 を分割

欲しい機能

既に実装済みかもしれませんが、欲しい機能の要望を書いてみた。
・マルチクラウド対応
・REST APIでのアクセス(APIリファレンスの共有)
・JOB定期実行(外部からcliやREST APIコールでもいいかも)
・ユーザ別アクセス制限や画面操作ログ保存
・ターミナル実行時の操作ログ保存
・お試し構成(All in Oneタイプ)

v1.0.0 release notes: known issues

依存パッケージのバージョンアップ

以下のパッケージのバージョンを上げる予定です。

  • Upgrade Microsoft.AspNetCore.All to version 2.1.4 or later.
  • Upgrade webpack-bundle-analyzer to version 3.3.2 or later.
  • Upgrade webpack-dev-server to version 3.1.11 or later.

GitHubのアクセス頻度について

githubのapiはアクセス頻度に制限があり、403エラーが発生する可能性があります。
https://developer.github.com/v3/rate_limit/

改善するには、KAMONOHASHIのユーザ情報設定画面から、GitHubのトークンを登録してください。

OOM kill時のエラー表示

メモリの指定が足りない場合にコンテナが落ちますが、エラー表示が分かりにくいです。
現状はcontainers with unready status: [main] とだけ出ているのを改善予定です。

apt update未実施でデプロイした際のエラー

apt update未実施でデプロイする際、nfs-commonのインストール時にFailed to fetch ...といったエラーが出る場合があります。
全てのマシン上でsudo apt-get updateを実行した後、再デプロイすることで解決可能です。

GitLab 11.8以降でコンテナレジストリ機能連携ができない

11.8 で実装された GitLab Container Registry API に対応していません。

ドット.が含まれているユーザー名が使用できません

学習管理の履歴間の関連管理

KAMONOHASHIへのリクエスト
各学習が親子関係を持てるようになっているので、それを可視化する機能が欲しい。

学習がどんな試行錯誤でどう発展していったのか、後で振り返れるようにしたい。

「!(任意の文字列)を含む」検索時の動作不良

発生した現象
データ名など文字列のものについて検索をする際、
接頭に「!」をつけ、「を含む」を選択すると、「を含まない」として検索される。

期待する動作
「!」で始まる文字列が正しく検索される。

[要望] webhook機能の実装

jobのstate変更時などにwebhookが飛ぶと、以下のようなシチュエーションで便利なので、実装されると嬉しいです!

  • チャットツールへのjob完了/失敗通知
  • チケット起票の自動化

正常終了したはずの学習・推論のステータスがFailedになる

発生した現象
学習・推論を実行した際、処理が正常に完了し、結果ファイル作成と、LOG上での”Completed”表示が行わたにもかかわらず、画面上のステータスがFailedとなる。
同時に別のクライアントから当該レコードの参照を行うと、発生する。

再現手順
学習あるいは推論を行い、完了する直前に当該レコードをWeb上で参照して、ページリロードを繰り返す。

期待する動作
ステータスがCompletedになる。

環境

  • KAMONOHASHIのバージョン: 1.0.1
  • OSとそのバージョン(ubuntu 16.04 など): ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など) : chrome

OOM kill時のエラー表示

KAMONOHASHIへのリクエスト
OOM kill時のエラー表示
メモリの指定が足りない場合にコンテナが落ちますが、エラー表示が分かりにくいです。
現状はcontainers with unready status: [main] とだけ出ているのを改善予定です。
#1

学習または推論にて環境変数に数字を設定した際のエラーメッセージが不適切

発生した現象
学習、推論実行画面にて、環境変数のKeyに数字を設定して、
実行ボタンを押下すると、エラーになるがメッセージが不適切。

スクリーンショット、ログ

Failed to run training. The message bellow may be help to resolve: 422 : Job.batch "training-168" is invalid: [spec.template.spec.containers[0].env[20].name: Invalid value: "0123": a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1', regex used for validation is '[-._a-zA-Z][-._a-zA-Z0-9]*'), spec.template.spec.containers[1].env[20].name: Invalid value: "0123": a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1', regex used for validation is '[-._a-zA-Z][-._a-zA-Z0-9]*'), spec.template.spec.initContainers[0].env[20].name: Invalid value: "0123": a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1', regex used for validation is '[-._a-zA-Z][-._a-zA-Z0-9]*')]

計算リソースの使用量を可視化したい

KAMONOHASHIへのリクエスト
特定期間の計算リソース使用量をグラフや統計レポートなどで可視化したい。

各案件の稼働状況を確認したり、計算リソースの拡張計画を考える際の参考になる。

ユーザ情報設定画面の表示不具合

発生した現象
ユーザ情報設定画面のRegistry Token表示部分で、ユーザ名/リポジトリの部分が正常に表示されません。

再現手順
新規GitLabレジストリを登録し、自分が所属するテナントに割り当て。
そして登録したレジストリに対してトークンを割り当てるために、ユーザ情報設定画面のRegistry Tokenタブに遷移。

期待する動作
GitLabレジストリで登録したプロジェクト名が表示される。

環境
不具合を確認した環境を書いてください

  • KAMONOHASHIのバージョン: 1.0.0
  • OSとそのバージョン(ubuntu 16.04 など): Client=Windows10, Server=Ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など): Chrome
  • CLIとそのバージョン、Pythonのバージョンと仮想環境(CLI 1.0.0 python3.5.6 conda 4.6.4 など) : 未使用

スクリーンショット、ログ
キャプチャ

推論ジョブの一覧

KAMONOHASHIへのリクエスト
kamonohashi-cliにて推論ジョブの一覧を取る方法が存在しない。
学習ジョブのkqi training listに相当するものが欲しい。

GitLab 11.8以降でコンテナレジストリ機能連携ができない

発生した現象
GitLab 11.8以降のGitlabをレジストリ登録した場合、
学習・推論・前処理の新規作成がエラーで実行できません

(エラー詳細は後日記載)

再現手順
GitLab 11.10を構築します。
KAMOBOHASHIのレジストリ登録を行います
学習の新規作成を実行し、コンテナ選択のステップまで進めます

期待する動作
GitLab 11.8以降のサポート

環境

  • KAMONOHASHIのバージョン: 1.0.0
  • ubuntu 16.04

スクリーンショット、ログ

その他の情報
#1
https://docs.gitlab.com/ee/api/container_registry.html

マルチクラウド対応

#27 の発展として、複数のクラウドサービスをまたいで利用可能にしたい。
サービスによってGPUノードのスペック・価格が異なるので、適切なサービスを取捨選択してくれるとベスト。

#7 を分割

バックアップログのタイムゾーンが間違えている

発生した現象
KAMONOHASHIをインストールしたサーバの/var/log/kamonohashi/platypus-web-api/にあるLogicDebug.logに、以下のようなログが出力されている。

LogicDebug.log.2019-06-16:2019/06/16 01:00:25.550,DEBUG,74,BackupPostgresTimer,-,-,TimerScheduleOptionsBase#getDueTime(): タイムゾーン "Etc/UTC" での現在日付: 曜日 Sunday, 日付時刻 06/16/2019 01:00:25

OSタイムゾーンはJSTで、ログの時刻も実態はJSTになっているが、表示だけEtc/UTCとなっている。

再現手順
定期バックアップを実施する

期待する動作
表示もJSTになる

環境

  • KAMONOHASHIのバージョン: 1.0.1
  • OSとそのバージョン(ubuntu 16.04 など): ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など) : 未使用
  • CLIとそのバージョン、Pythonのバージョンと仮想環境(CLI 1.0.0 python3.5.6 conda 4.6.4 など)
    : 未使用

スクリーンショット、ログ
ホスト&コンテナのdateコマンド実行結果

$:/var/log/kamonohashi/platypus-web-api# docker exec -it 814d18c6d6ec date
Wed Jun 19 14:21:43 JST 2019
$:/var/log/kamonohashi/platypus-web-api# date
2019年  6月 19日 水曜日 14:21:45 JST

その他の情報
なし

JOBの定期実行

JOB定期実行ができるようにしたい。
外部からのcliやREST APIコール( #36 )でも代替可能。

#7 を分割

メニューアクセス管理画面が見切れる

メニューアクセス管理画面のアクセス許可ロール部が見切れてしまう。
横スクロールバーが表示されないことにより、
見切れたロールについては編集することができない。

操作ログの保存

監査機能として、ユーザがKAMONOHASHIで行った操作のログを保存・参照できる機能が欲しい

#7 を分割

自己署名証明書で構築したGitLabでgit cloneできない

発生した現象
自己署名証明書で構築したGitLabでgit cloneできない

再現手順
GitLabに自己署名証明書を使用してhttpsでアクセスするようにKAMONOHASHIに登録する

期待する動作
自己署名証明書でもソースコードがgit cloneできる

環境
不具合を確認した環境を書いてください

  • KAMONOHASHIのバージョン: 1.0.0, 1.0.1
  • OSとそのバージョン: ubuntu 16.04

スクリーンショット、ログ
fatal: unable to access 'https://*****': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

その他の情報
CLIコンテナのgit設定でsslのチェックをしないようにする必要があります

リソース管理から異なるテナントの前処理を削除しようとするとエラー

発生した現象
リソース管理画面から異なるテナントの前処理を削除しようとしたが、認証エラーが発生し削除できない。

再現手順

  1. adminロールを所持するユーザでリソース管理画面を表示。
  2. 表示しているテナントとは別のテナントの前処理を選択し削除ボタンを押下する。
  3. 認証エラーのメッセージとともに、ログイン画面が表示される。

期待する動作
リソース管理から異なるテナントであっても前処理を削除できる。

環境

  • KAMONOHASHIのバージョン:1.0.0
  • OSとそのバージョン(ubuntu 16.04 など):Client=Windows10, Server=Ubuntu 16.04
  • ブラウザとそのバージョン(Firefox 65.0.2 など):Chrome

apt update未実施でデプロイした際のエラー

発生した現象
各ノードでapt updateを実施せずにデプロイツールを実行した場合に
デプロイツールでnfs-commonのインストール時にFailed to fetch ...エラーが出てデプロイ失敗します

ワークアラウンドは、
すべてのノードで apt apdateを実施してからデプロイツールを実行することです

再現手順
AWS/AzureにVMを構築し、apt updateを実施せずにデプロイを実行します

期待する動作
apt updateを手動実行しなくてよい

環境

  • 1.0.0
  • ubuntu 16.04
  • AWS EC2/Azure VM
  • apt update未実施

スクリーンショット、ログ

その他の情報
#1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.