Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev oneembedding eager #9873

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open

Dev oneembedding eager #9873

wants to merge 8 commits into from

Conversation

ShawnXuan
Copy link
Collaborator

dispatch stateful oneembedding ops

this change involves the following functors with kernel state:

  • OneEmbeddingIdShuffleFunctor
  • OneEmbeddingEmbeddingShuffleFunctor
  • OneEmbeddingEmbeddingGradientShuffleFunctor
  • OneEmbeddingLookupFunctor
  • OneEmbeddingFusedLookupFunctor
  • OneEmbeddingEmbeddingPutFunctor
  • OneEmbeddingUniqueKeyValuePairFunctor
  • OneEmbeddingSgdUpdateFunctor
  • OneEmbeddingAdamUpdateFunctor
  • OneEmbeddingAdagradUpdateFunctor
  • OneEmbeddingFtrlUpdateFunctor

but not OneEmbeddingFusedLookupGradFunctor

@ShawnXuan ShawnXuan marked this pull request as ready for review February 20, 2023 06:07
@ShawnXuan ShawnXuan requested a review from hjchen2 as a code owner February 20, 2023 06:07
@ShawnXuan ShawnXuan enabled auto-merge (squash) February 20, 2023 06:07
@github-actions
Copy link
Contributor

Speed stats:
GPU Name: GeForce GTX 1080 

❌ OneFlow resnet50 time: 141.0ms (= 14096.9ms / 100, input_shape=[16, 3, 224, 224])
PyTorch resnet50 time: 143.6ms (= 14361.4ms / 100, input_shape=[16, 3, 224, 224])
❌ Relative speed: 1.02 (= 143.6ms / 141.0ms)

OneFlow resnet50 time: 80.7ms (= 8072.7ms / 100, input_shape=[8, 3, 224, 224])
PyTorch resnet50 time: 85.0ms (= 8503.5ms / 100, input_shape=[8, 3, 224, 224])
✔️ Relative speed: 1.05 (= 85.0ms / 80.7ms)

OneFlow resnet50 time: 49.9ms (= 9971.6ms / 200, input_shape=[4, 3, 224, 224])
PyTorch resnet50 time: 61.8ms (= 12351.7ms / 200, input_shape=[4, 3, 224, 224])
✔️ Relative speed: 1.24 (= 61.8ms / 49.9ms)

OneFlow resnet50 time: 32.8ms (= 6561.8ms / 200, input_shape=[2, 3, 224, 224])
PyTorch resnet50 time: 44.4ms (= 8887.2ms / 200, input_shape=[2, 3, 224, 224])
✔️ Relative speed: 1.35 (= 44.4ms / 32.8ms)

OneFlow resnet50 time: 24.5ms (= 4908.9ms / 200, input_shape=[1, 3, 224, 224])
PyTorch resnet50 time: 42.2ms (= 8437.0ms / 200, input_shape=[1, 3, 224, 224])
✔️ Relative speed: 1.72 (= 42.2ms / 24.5ms)

OneFlow swin dataloader time: 0.239s (= 47.809s / 200, num_workers=1)
PyTorch swin dataloader time: 0.149s (= 29.800s / 200, num_workers=1)
Relative speed: 0.623 (= 0.149s / 0.239s)

OneFlow swin dataloader time: 0.068s (= 13.645s / 200, num_workers=4)
PyTorch swin dataloader time: 0.043s (= 8.548s / 200, num_workers=4)
Relative speed: 0.626 (= 0.043s / 0.068s)

OneFlow swin dataloader time: 0.041s (= 8.122s / 200, num_workers=8)
PyTorch swin dataloader time: 0.023s (= 4.568s / 200, num_workers=8)
Relative speed: 0.562 (= 0.023s / 0.041s)

❌ OneFlow resnet50 time: 152.4ms (= 15242.0ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 160.3ms (= 16025.5ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
❌ Relative speed: 1.05 (= 160.3ms / 152.4ms)

OneFlow resnet50 time: 91.3ms (= 9130.0ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 112.4ms (= 11239.4ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.23 (= 112.4ms / 91.3ms)

OneFlow resnet50 time: 59.9ms (= 11976.3ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 78.0ms (= 15592.0ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.30 (= 78.0ms / 59.9ms)

OneFlow resnet50 time: 42.4ms (= 8478.9ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 72.3ms (= 14463.0ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.71 (= 72.3ms / 42.4ms)

OneFlow resnet50 time: 36.5ms (= 7305.8ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 71.5ms (= 14298.4ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.96 (= 71.5ms / 36.5ms)

@github-actions
Copy link
Contributor

View latest API docs preview at: https://staging.oneflow.info/docs/Oneflow-Inc/oneflow/pr/9873/

1 similar comment
@github-actions
Copy link
Contributor

View latest API docs preview at: https://staging.oneflow.info/docs/Oneflow-Inc/oneflow/pr/9873/

@ShawnXuan
Copy link
Collaborator Author

4 tests were performed with DLRM model:

  • 1 one_embedding(embedding_dim=128), graph mode
  • 1 one_embedding(embedding_dim=128), eager mode
  • 2 one_embeddings(embedding_dim=64, concat outputs), graph mode
  • 2 one_embeddings(embedding_dim=64, concat outputs), eager mode

All cases converged with evaluation AUC higher than 0.8025.

@ShawnXuan ShawnXuan disabled auto-merge February 21, 2023 09:27
@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2023

Speed stats:
GPU Name: GeForce GTX 1080 

❌ OneFlow resnet50 time: 141.2ms (= 14118.6ms / 100, input_shape=[16, 3, 224, 224])
PyTorch resnet50 time: 143.1ms (= 14314.5ms / 100, input_shape=[16, 3, 224, 224])
❌ Relative speed: 1.01 (= 143.1ms / 141.2ms)

OneFlow resnet50 time: 81.3ms (= 8131.5ms / 100, input_shape=[8, 3, 224, 224])
PyTorch resnet50 time: 87.5ms (= 8750.5ms / 100, input_shape=[8, 3, 224, 224])
✔️ Relative speed: 1.08 (= 87.5ms / 81.3ms)

OneFlow resnet50 time: 50.7ms (= 10147.9ms / 200, input_shape=[4, 3, 224, 224])
PyTorch resnet50 time: 53.7ms (= 10738.8ms / 200, input_shape=[4, 3, 224, 224])
✔️ Relative speed: 1.06 (= 53.7ms / 50.7ms)

OneFlow resnet50 time: 34.2ms (= 6842.4ms / 200, input_shape=[2, 3, 224, 224])
PyTorch resnet50 time: 45.5ms (= 9109.6ms / 200, input_shape=[2, 3, 224, 224])
✔️ Relative speed: 1.33 (= 45.5ms / 34.2ms)

OneFlow resnet50 time: 26.2ms (= 5236.6ms / 200, input_shape=[1, 3, 224, 224])
PyTorch resnet50 time: 41.7ms (= 8338.6ms / 200, input_shape=[1, 3, 224, 224])
✔️ Relative speed: 1.59 (= 41.7ms / 26.2ms)

OneFlow swin dataloader time: 0.237s (= 47.366s / 200, num_workers=1)
PyTorch swin dataloader time: 0.149s (= 29.840s / 200, num_workers=1)
Relative speed: 0.630 (= 0.149s / 0.237s)

OneFlow swin dataloader time: 0.071s (= 14.284s / 200, num_workers=4)
PyTorch swin dataloader time: 0.041s (= 8.280s / 200, num_workers=4)
Relative speed: 0.580 (= 0.041s / 0.071s)

OneFlow swin dataloader time: 0.039s (= 7.899s / 200, num_workers=8)
PyTorch swin dataloader time: 0.022s (= 4.430s / 200, num_workers=8)
Relative speed: 0.561 (= 0.022s / 0.039s)

❌ OneFlow resnet50 time: 152.6ms (= 15255.9ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 165.0ms (= 16502.2ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
❌ Relative speed: 1.08 (= 165.0ms / 152.6ms)

OneFlow resnet50 time: 92.6ms (= 9256.6ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 102.9ms (= 10291.6ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.11 (= 102.9ms / 92.6ms)

OneFlow resnet50 time: 60.1ms (= 12018.7ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 83.0ms (= 16603.0ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.38 (= 83.0ms / 60.1ms)

OneFlow resnet50 time: 42.2ms (= 8438.5ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 72.6ms (= 14520.4ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.72 (= 72.6ms / 42.2ms)

OneFlow resnet50 time: 35.8ms (= 7161.9ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 68.2ms (= 13641.9ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.90 (= 68.2ms / 35.8ms)

@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2023

View latest API docs preview at: https://staging.oneflow.info/docs/Oneflow-Inc/oneflow/pr/9873/

@github-actions
Copy link
Contributor

github-actions bot commented Apr 3, 2023

Speed stats:
GPU Name: GeForce GTX 1080 

❌ OneFlow resnet50 time: 141.1ms (= 14114.0ms / 100, input_shape=[16, 3, 224, 224])
PyTorch resnet50 time: 145.9ms (= 14588.7ms / 100, input_shape=[16, 3, 224, 224])
❌ Relative speed: 1.03 (= 145.9ms / 141.1ms)

OneFlow resnet50 time: 82.3ms (= 8232.9ms / 100, input_shape=[8, 3, 224, 224])
PyTorch resnet50 time: 93.3ms (= 9334.6ms / 100, input_shape=[8, 3, 224, 224])
✔️ Relative speed: 1.13 (= 93.3ms / 82.3ms)

OneFlow resnet50 time: 50.8ms (= 10152.0ms / 200, input_shape=[4, 3, 224, 224])
PyTorch resnet50 time: 71.7ms (= 14343.0ms / 200, input_shape=[4, 3, 224, 224])
✔️ Relative speed: 1.41 (= 71.7ms / 50.8ms)

OneFlow resnet50 time: 34.8ms (= 6963.9ms / 200, input_shape=[2, 3, 224, 224])
PyTorch resnet50 time: 65.9ms (= 13180.8ms / 200, input_shape=[2, 3, 224, 224])
✔️ Relative speed: 1.89 (= 65.9ms / 34.8ms)

OneFlow resnet50 time: 25.6ms (= 5124.0ms / 200, input_shape=[1, 3, 224, 224])
PyTorch resnet50 time: 64.5ms (= 12908.4ms / 200, input_shape=[1, 3, 224, 224])
✔️ Relative speed: 2.52 (= 64.5ms / 25.6ms)

OneFlow swin dataloader time: 0.239s (= 47.769s / 200, num_workers=1)
PyTorch swin dataloader time: 0.150s (= 29.908s / 200, num_workers=1)
Relative speed: 0.626 (= 0.150s / 0.239s)

OneFlow swin dataloader time: 0.070s (= 14.020s / 200, num_workers=4)
PyTorch swin dataloader time: 0.042s (= 8.471s / 200, num_workers=4)
Relative speed: 0.604 (= 0.042s / 0.070s)

OneFlow swin dataloader time: 0.042s (= 8.395s / 200, num_workers=8)
PyTorch swin dataloader time: 0.022s (= 4.457s / 200, num_workers=8)
Relative speed: 0.531 (= 0.022s / 0.042s)

❌ OneFlow resnet50 time: 153.1ms (= 15313.4ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 164.2ms (= 16415.7ms / 100, input_shape=[16, 3, 224, 224], ddp, world size=2)
❌ Relative speed: 1.07 (= 164.2ms / 153.1ms)

OneFlow resnet50 time: 94.2ms (= 9419.7ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 104.7ms (= 10468.8ms / 100, input_shape=[8, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.11 (= 104.7ms / 94.2ms)

OneFlow resnet50 time: 64.8ms (= 12969.8ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 79.6ms (= 15922.1ms / 200, input_shape=[4, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.23 (= 79.6ms / 64.8ms)

OneFlow resnet50 time: 46.1ms (= 9225.8ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 70.0ms (= 13992.2ms / 200, input_shape=[2, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.52 (= 70.0ms / 46.1ms)

OneFlow resnet50 time: 42.2ms (= 8449.9ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
PyTorch resnet50 time: 68.0ms (= 13590.9ms / 200, input_shape=[1, 3, 224, 224], ddp, world size=2)
✔️ Relative speed: 1.61 (= 68.0ms / 42.2ms)

@github-actions
Copy link
Contributor

github-actions bot commented Apr 3, 2023

View latest API docs preview at: https://staging.oneflow.info/docs/Oneflow-Inc/oneflow/pr/9873/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant