Comments (8)
To answer your question:
"In addition to installing the models, were you able to run PyTorch Live on Android or iOS from Ubuntu?"
I think I could not even install the models properly. And was not able to run it on any device.
I was not sure if I should use npx react-native init
or npx torchlive-cli init
to initialize a project based on react-native-template-pytorch-live
.
Both commands seems successful.
I make sure my emulator is running.
Below are reporting the results of the two methods (both fail).
first version - with npx react-native run-android
error: package org.pytorch.rn.core.ml.processing does not exist
cd "/home/simonchauvin/drafts/live/MyFirstProject" && npx react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 986 file(s) to forward-jetify. Using 12 workers...
info Starting JS server...
info Installing the app...
> Task :react-native-gesture-handler:compileDebugJavaWithJavac
> Task :react-native-safe-area-context:compileDebugJavaWithJavac
> Task :react-native-screens:compileDebugJavaWithJavac
> Task :app:compileDebugJavaWithJavac FAILED
94 actionable tasks: 94 executed
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: /home/simonchauvin/drafts/live/MyFirstProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:19: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.BaseIValuePacker;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:20: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.BertTokenizer;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:21: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.PackerContext;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:22: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.PackerRegistry;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:24: error: cannot find symbol
public class BertQAPacker extends BaseIValuePacker {
^
symbol: class BaseIValuePacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:34: error: cannot find symbol
protected void register(final PackerRegistry registry) {
^
symbol: class PackerRegistry
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:45: error: cannot find symbol
private BertTokenizer getBertTokenizer(PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:45: error: cannot find symbol
private BertTokenizer getBertTokenizer(PackerContext packerContext)
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:68: error: cannot find symbol
private IValue packString(final JSONObject jobject, final PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:86: error: cannot find symbol
private String decodeBertQAAnswer(final IValue ivalue, final PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:33: error: method does not override or implement a method from a supertype
@Override
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:35: error: cannot find symbol
super.register(registry);
^
symbol: variable super
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: variable registry
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:49: error: cannot find symbol
bertTokenizer = new BertTokenizer(packerContext.specSrcJson.getString("vocabulary_bert"));
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:50: error: cannot find symbol
registry.store("bert_tokenizer_custom", bertTokenizer);
^
symbol: variable registry
location: class BertQAPacker
Note: /home/simonchauvin/drafts/live/MyFirstProject/android/app/src/debug/java/org/pytorch/live/example/ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
17 errors
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 12s
error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: /home/simonchauvin/drafts/live/MyFirstProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:19: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.BaseIValuePacker;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:20: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.BertTokenizer;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:21: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.PackerContext;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:22: error: package org.pytorch.rn.core.ml.processing does not exist
import org.pytorch.rn.core.ml.processing.PackerRegistry;
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:24: error: cannot find symbol
public class BertQAPacker extends BaseIValuePacker {
^
symbol: class BaseIValuePacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:34: error: cannot find symbol
protected void register(final PackerRegistry registry) {
^
symbol: class PackerRegistry
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:45: error: cannot find symbol
private BertTokenizer getBertTokenizer(PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:45: error: cannot find symbol
private BertTokenizer getBertTokenizer(PackerContext packerContext)
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:68: error: cannot find symbol
private IValue packString(final JSONObject jobject, final PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:86: error: cannot find symbol
private String decodeBertQAAnswer(final IValue ivalue, final PackerContext packerContext)
^
symbol: class PackerContext
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:33: error: method does not override or implement a method from a supertype
@Override
^
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:35: error: cannot find symbol
super.register(registry);
^
symbol: variable super
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:47: error: cannot find symbol
BertTokenizer bertTokenizer = (BertTokenizer) registry.get("bert_tokenizer_custom");
^
symbol: variable registry
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:49: error: cannot find symbol
bertTokenizer = new BertTokenizer(packerContext.specSrcJson.getString("vocabulary_bert"));
^
symbol: class BertTokenizer
location: class BertQAPacker
/home/simonchauvin/drafts/live/MyFirstProject/android/app/src/main/java/org/pytorch/live/example/BertQAPacker.java:50: error: cannot find symbol
registry.store("bert_tokenizer_custom", bertTokenizer);
^
symbol: variable registry
location: class BertQAPacker
Note: /home/simonchauvin/drafts/live/MyFirstProject/android/app/src/debug/java/org/pytorch/live/example/ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
17 errors
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 12s
at makeError (/home/simonchauvin/drafts/live/MyFirstProject/node_modules/execa/index.js:174:9)
at /home/simonchauvin/drafts/live/MyFirstProject/node_modules/execa/index.js:278:16
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async runOnAllDevices (/home/simonchauvin/drafts/live/MyFirstProject/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:94:5)
at async Command.handleAction (/home/simonchauvin/drafts/live/MyFirstProject/node_modules/@react-native-community/cli/build/index.js:186:9)
info Run CLI with --verbose flag for more details.
second version - with npx torchlive-cli run-android
cd MyFirstProjectCLI && npx torchlive-cli run-android
BUILD SUCCESSFUL in 22s
132 actionable tasks: 132 executed
info Connecting to the development server...
info Starting the app on "emulator-5554"...
Starting: Intent { cmp=org.pytorch.live.example/.MainActivity }
Done in 25.97s.
but the emulator shows a message in red:
"Unable to load script.Make sure you are either running a Metro server or that your bundle 'index.android.bundle' is packaged correctly for release."
I start metro:
npm start
> [email protected] start
> react-native start
#######
################
######### #########
######### ##########
######### ###### #########
##########################################
##### ##################### #####
##### ############## #####
##### ### ###### ### #####
##### ####### ####### #####
##### ########### ########### #####
##### ########################## #####
##### ########################## #####
##### ###################### ######
###### ############# #######
######### #### #########
######### #########
######### #########
#########
Welcome to Metro!
Fast - Scalable - Integrated
To reload the app press "r"
To open developer menu press "d"
then again npx torchlive-cli run-android
. It ends with BUILD SUCCESSFUL in 22s
.
then in the metro
terminal, it start bundling ./index.js` but fails with:
BUNDLE ./index.js
error: Error: Unable to resolve module ../../models/detr_resnet50.ptl from /home/simonchauvin/drafts/live/MyFirstProjectCLI/src/examples/ObjectDetectionExample.tsx:
None of these files exist:
* detr_resnet50.ptl
* models/detr_resnet50.ptl/index(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)
25 | const modelInfo: ModelInfo = {
26 | name: 'DETR',
> 27 | model: require('../../models/detr_resnet50.ptl'),
| ^
28 | };
29 |
30 | const objectColors = [
at ModuleResolver.resolveDependency (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:211:15)
at DependencyGraph.resolveDependency (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/node-haste/DependencyGraph.js:413:43)
at Object.resolve (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/lib/transformHelpers.js:317:42)
at resolve (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/DeltaBundler/traverseDependencies.js:629:33)
at /home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/DeltaBundler/traverseDependencies.js:645:26
at Array.reduce (<anonymous>)
at resolveDependencies (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/DeltaBundler/traverseDependencies.js:644:33)
at /home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/DeltaBundler/traverseDependencies.js:329:33
at Generator.next (<anonymous>)
at asyncGeneratorStep (/home/simonchauvin/drafts/live/MyFirstProjectCLI/node_modules/metro/src/DeltaBundler/traverseDependencies.js:137:24)
in MyFirstProjectCLI/models
there are,
bert_qa.ptl.live.spec.json
detr_resnet50.ptl.live.spec.json
error.log
make_models.py
mnist.ptl.live.spec.json
mobilenet_v3_large.ptl.live.spec.json
mobilenet_v3_small.ptl.live.spec.json
requirements.txt
resnet18.ptl.live.spec.json
venv
if I touch detr_resnet50.ptl
, then comes the next error Unable to resolve module ../../models/mnist.ptl
.
By the way, npx torchlive-cli doctor
gives:
_ _ _ _
| |_ ___ _ __ ___| |__ | (_)_ _____
| __/ _ \| '__/ __| '_ \| | \ \ / / _ \
| || (_) | | | (__| | | | | |\ V / __/
\__\___/|_| \___|_| |_|_|_| \_/ \___|
torchlive version 0.1.1
Homebrew
🚫 not installed
Python
🚫 not installed
Watchman
🚫 not installed
Node.js
🚫 not installed
React Native should not be installed locally
✅ package does not exist.
Yarn
🚫 not installed
Java Development Kit
🚫 not installed
Android SDK Manager
📍 path: /home/simonchauvin/Android/Sdk/tools/bin/sdkmanager
🏁 min version: 26.1.1
/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/utils/CommandUtils.js:65
throw new Error('not yet implemented');
^
Error: not yet implemented
at Object.execute (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/utils/CommandUtils.js:65:23)
at execute (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/utils/CommandUtils.js:96:37)
at Object.getVersion (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/utils/CommandUtils.js:106:30)
at HealthCheck.satisfies (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/commands/HealthCheck.js:40:36)
at runHealthCheck (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/cli-commands/Doctor.js:136:57)
at /home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/cli-commands/Doctor.js:217:13
at Array.forEach (<anonymous>)
at /home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/cli-commands/Doctor.js:216:22
at step (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/cli-commands/Doctor.js:41:23)
at Object.next (/home/simonchauvin/.npm/_npx/e9a46805b0361e9c/node_modules/torchlive-cli/build/cli-commands/Doctor.js:22:53)
There is definitely something wrong with my installation.
I will stop my experiments here and wait for the linux support.
Thank you @aaronespasa for your help!
from playtorch.
Hi @chauvinSimon,
When building the script, see that the program is using the python3 with the version you have installed locally, which can lead to multiple errors at the time of looking for specific dependencies.
I published a solution to this error on the following Pull Request. However, the solution have not been tested with Ubuntu and you may need to make some changes on the script.js file to make it work on that OS:
#9
from playtorch.
Thank you @aaronespasa for your answer. And thank you a lot for your PR!
Indeed, I had to adapt script.js
:
const makeModels = () => {
// Using '.' (dot command), which is supported by /bin/sh, instead of source (`bin/sh: 1: source: not found`)
execSync('. venv/bin/activate && \
python3 -m pip install --upgrade pip && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
python3 -W ignore make_models.py');
}
and
case 'linux':
// issues with privileges when run from execSync(). Therefore, before running nxp, I run:
// 'sudo apt-get install python3.9'
// 'sudo apt-get install python3-pip'
execSync('python3 -m pip install virtualenv');
execSync('python3 -m venv venv');
makeModels();
break;
In addition, it required some yarn cache clean
against .yarn-metadata.json: Unexpected end of JSON input
.
I could eventually build with npx react-native init MyFirstProject --template [local path to my adapted react-native-template-pytorch-live]
😃 🎉
from playtorch.
Oh, I'm so glad to read that @chauvinSimon ! 🎉
In addition to installing the models, were you able to run PyTorch Live on Android or iOS from Ubuntu?
from playtorch.
I will test that tomorrow and let you know
from playtorch.
Cool!
from playtorch.
Hey @chauvinSimon Thanks for reporting the issue and would be happy to work with you on addressing this linux issue! looks like the models file is not generated correctly and you could also try to use the "python3 -W ignore make_models.py" to generate the models.
also the error.log files under the models/ dir may give some suggestion on what's going on there.
let us know if that's helpful
and really thanks @aaronespasa for helping with this -- we are testing through the PR you submitted (for the linux especially)!
from playtorch.
Thank you @liuyinglao
Indeed, python3 -W ignore make_models.py
could create the missing models.
One issue I had was with which env
to activate. At the end, what worked for me was to use the venv
of my first version (manual set up) which was correct, and run python3 -W ignore make_models.py
in the second project (with CLI).
A bit complicated.
But eventually, I could start the app, both on the device and in the emulator.
Again, thank you both for your help. The issue can be closed
from playtorch.
Related Issues (20)
- PlayTorchJSIModule not found - ios & android m2 macbook pro HOT 2
- It is not possible to convert audio float32 tensor to playable uint8 audio expected by .audioFromBytes() HOT 1
- How to specify interpolation in transforms.resize?
- AudioUtil is not working on Android
- How to convert my yolov5s.pt to yolov5s.ptl HOT 1
- resize function gives error: 'Factory function resize expects 1 argument but 4 are given.'
- Cannot scan QR code from the PlayTorch app HOT 2
- playtorchjsimodule not found
- Mac M1 tutorial failure HOT 2
- unable to load local .ptl model HOT 2
- How to export a Huggingface transfromer model? HOT 3
- react_native_pytorch_core error during gradle build HOT 15
- image data fetch
- Is there a processing step im missing when using a custom trained yolo model?
- Is this project still maintained?
- Unable to work
- CMake Error
- Android build fails | Expo app using prebuild HOT 4
- 'react_native_pytorch_core-Swift.h' file not found during ios build HOT 1
- Add how to use EAS (Expo Application Service) build within this tutorial
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from playtorch.