Skip to content

deepray-AI/deepray

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Introduction

Deepray is a deep learning framework for Keras, to build model like LEGO, and train model with easier, faster and cheaper way.

Why Deepray?

Deepray contains list of features to improve usability and performance for Deep Learning, especially provides some essential components for recommendation algorithm.

Trainer

  • Distributed Training with Horovod backend
  • Gradient Accumulation

Layers

  • Embedding Variable from DeepRec.
  • Compositional Embedding
  • Feature Cross layer for recommendation algorithm
  • ......

Kernels

  • Group Embedding for Embedding Variable
  • ......

Optimizer

  • Adam/Adagrad/SDG/FTRL Optimizer for Embedding Variable
  • AdamAsync Optimizer
  • MultiOptimizer
  • ......

Datasets

......

Compatibility Matrix

Deepray TensorFlow Compiler cuDNN CUDA
deepray-0.21.92 2.15 GCC 11.4.0 8.9 12.2.2

Quick start

  • Install Deepray:
pip install deepray
  • Using Docker(Recommended): Latest Release Images: hailinfufu/deepray-release:nightly-gpu-py3.10-tf2.15.1-cu12.2.2-ubuntu20.04
docker pull hailinfufu/deepray-release:nightly-gpu-py3.10-tf2.15.1-cu12.2.2-ubuntu20.04
docker run -it hailinfufu/deepray-release:nightly-gpu-py3.10-tf2.15.1-cu12.2.2-ubuntu20.04
  • Build from source:
git clone https://github.com/deepray-AI/deepray.git
cd deepray && bash build.sh

Deepray example

Define the training workflow. Here's a toy example (explore real examples):

# main.py
# ! pip install deepray
from typing import Dict

import tensorflow as tf
from absl import flags

import deepray as dp
from deepray.core.trainer import Trainer
from deepray.datasets.movielens.movielens_100k_ratings import Movielens100kRating
from deepray.layers.embedding_variable import EmbeddingVariable

# --------------------------------
# Step 1: Define a Keras Module
# --------------------------------
class RankingModel(tf.keras.Model):

  def __init__(self, embedding_dimension=32):
    super().__init__()
    # Compute embeddings for users.
    self.user_embeddings = EmbeddingVariable(embedding_dim=embedding_dimension)
    self.movie_embeddings = EmbeddingVariable(embedding_dim=embedding_dimension)

    # Compute predictions.
    self.ratings = tf.keras.Sequential(
        [
            # Learn multiple dense layers.
            tf.keras.layers.Dense(256, activation="relu"),
            tf.keras.layers.Dense(64, activation="relu"),
            # Make rating predictions in the final layer.
            tf.keras.layers.Dense(1)
        ]
    )

  def call(self, inputs: Dict[str, tf.Tensor]) -> tf.Tensor:
    user_id, movie_title = inputs["user_id"], inputs["movie_title"]
    user_id = tf.reshape(user_id, [-1])
    movie_title = tf.reshape(movie_title, [-1])
    user_embedding = self.user_embeddings(user_id)
    movie_embedding = self.movie_embeddings(movie_title)
    emb_vec = tf.concat([user_embedding, movie_embedding], axis=1)
    return self.ratings(emb_vec)


# -------------------
# Step 2: Define data
# -------------------
data_pipe = Movielens100kRating(split=True)
dataset = data_pipe(flags.FLAGS.batch_size, is_training=True)

# -------------------
# Step 3: Train
# -------------------
optimizer = dp.optimizers.Adam(learning_rate=flags.FLAGS.learning_rate, amsgrad=False)
model = RankingModel()
trainer = Trainer(model=model, optimizer=optimizer, loss="MSE", metrics=[tf.keras.metrics.RootMeanSquaredError()])
trainer.fit(x=dataset)

Run the model on your terminal

python main.py --batch_size=32 --learning_rate=0.03

Examples

Recommender Systems
Natural Language Processing
Computer Vision

Communication

  • GitHub issues: any install, bug, feature issues.
  • 微信号: StateOfArt

License

Apache License 2.0