AI prompts
base on # RecML: High-Performance Recommender Library
## Vision
RecML is envisioned as a high-performance, large-scale deep learning recommender
system library optimized for Cloud TPUs. It aims to provide researchers and
practitioners state-of-the-art reference implementations, tools, and best
practice guidelines for building and deploying recommender systems.
The key goals of RecML are:
* **Performance & Scalability:** Leverage Cloud TPUs (including SparseCore
acceleration) to deliver exceptional performance for training and serving
massive models with large embeddings on datasets with millions or billions
of items/users. RecML can additionally target Cloud GPUs.
* **State-of-the-Art Models:** Provide production-ready, easy-to-understand
reference implementations of popular and cutting-edge models, with a strong
focus on LLM-based recommenders.
* **Ease of Use:** Offer a user-friendly API, intuitive abstractions, and
comprehensive documentation/examples for rapid prototyping and deployment.
* **Flexibility:** Primarily built with Keras and JAX, but designed with
potential future expansion to other frameworks like PyTorch/XLA.
* **Open Source:** Foster community collaboration and provide components to
help users get started with advanced recommender workloads on Google Cloud.
## Features
* **High Performance:** Optimized for Cloud TPU (SparseCore) training and
inference.
* **Scalable Architecture:** Designed for massive datasets and models with
large embedding tables. Includes support for efficient data loading
(tf.data, potentially Grain) and sharding/SPMD.
* **State-of-the-Art Model Implementations:** Reference implementations for
various recommendation tasks (ranking, retrieval, sequential).
* **Reusable Building Blocks:**
* Common recommendation layers (e.g., DCN, BERT4Rec).
* Specialized Embedding APIs (e.g. JAX Embedding API for SparseCore).
* Standardized metrics (e.g., AUC, Accuracy, NDCG@K, MRR, Recall@K).
* Common loss functions.
* **Unified Trainer:** A high-level trainer abstraction capable of targeting
different hardware (TPU/GPU) and frameworks. Includes customizable training
and evaluation loops.
* **End-to-End Support:** Covers aspects from data pipelines to training,
evaluation, checkpointing, metrics logging (e.g., to BigQuery), and model
export/serving considerations.
## Models Included
This library aims to house implementations for a variety of recommender models,
including:
* **SASRec:** Self-Attention based Sequential Recommendation
* **BERT4Rec:** Bidirectional Encoder Representations from Transformer for
Sequential Recommendation.
* **Mamba4Rec:** Efficient Sequential Recommendation with Selective State
Space Models.
* **HSTU:** Hierarchical Sequential Transduction Units for Generative
Recommendations.
* **DLRM v2:** Deep Learning Recommendation Model
## Roadmap / Future Work
* Expand reference model implementations (Retrieval, Uplift, foundation user
model).
* Add support for optimized configurations and lower precision training
(bfloat16, fp16).
* Improve support for Cloud GPU training and inference
* Enhance sharding and quantization support.
* Improve integration with Keras (and Keras Recommenders) and potentially
PyTorch/XLA.
* Develop comprehensive model serving examples and integrations.
* Refine data loading pipelines (e.g., Grain support).
* Add more common layers, losses, and metrics.
## Responsible Use
As with any machine learning model, potential risks exist. The performance and
behavior depend heavily on the training data, which may contain biases reflected
in the recommendations. Developers should carefully evaluate the model's
fairness and potential limitations in their specific application context.
## License
RecML is released under the Apache 2.0. Please see the `LICENSE` file for full
details.
", Assign "at most 3 tags" to the expected json: {"id":"13477","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"