Last updated

Your First Steps in Dataloop 🎯

What Can You Do? 🌟

With our powerful Python SDK, you'll have full control over your entire AI development lifecycle:

Core Resources 📊

  • 📁 Projects - Your high-level workspaces
  • 📊 Datasets - Your data collections
  • 🖼️ Items - Your individual files
  • ✏️ Annotations - Your data labels
  • 📝 Metadata - Your custom data attributes

Advanced Features 🚀

  • 🤖 Model Management - Train, deploy, and monitor ML models
  • 🔄 Pipelines - Build automated AI workflows
  • FaaS (Function as a Service) - Deploy serverless functions
  • 📦 DPKs (Dataloop Package Kit) - Package and share your solutions
  • 🎯 Tasks - Manage annotation and review workflows

AI Development Tools 🧠

  • 🔍 Model Zoo - Access pre-trained models
  • 🎓 Transfer Learning - Fine-tune existing models
  • 📈 Model Metrics - Track performance and metrics
  • 🔄 Data Versioning - Manage dataset versions

Automation & Integration 🔗

  • 🔄 Webhooks - Set up event-driven workflows
  • 🌐 REST API - Integrate with external systems
  • 🔌 Plugins - Extend platform functionality
  • 🤝 Team Collaboration - Manage users and roles

Authentication & Security 🔐

1. Interactive Login

import dtlpy as dl

# Smart login with token handling
if dl.token_expired():
    dl.login()

2. Headless Authentication

# Using API key (recommended for automation)
dl.login_api_key(api_key=os.environ['DTLPY_API_KEY'])

# Using email/password (not recommended for production)
dl.login_m2m(email='your-email@company.com', 
             password=os.environ['DTLPY_PASSWORD'])

3. Token Management

# Check token status
is_expired = dl.token_expired()

# Logout
dl.logout()

Project Management Mastery 🏗️

1. Creating Your First Project

# Create a new project
project = dl.projects.create(project_name='My-Awesome-Project')

# Get existing project
project = dl.projects.get(project_name='My-Awesome-Project')

2. Project Configuration

# Add project members
project.add_member(
    email='teammate@company.com',
    role=dl.MemberRole.Developer
)

3. Project Organization

# List all projects
projects = dl.projects.list()
for project in projects:
    print(f"Project: {project.name}")

Dataset Organization 📊

1. Creating Datasets

# Create a new dataset
dataset = project.datasets.create(dataset_name='training-data')

# Clone an existing dataset
cloned_dataset = dataset.clone(
    clone_name='validation-data'
)

2. Dataset Management

# List all datasets
datasets = project.datasets.list()

# Get dataset by name
dataset = project.datasets.get(dataset_name='training-data')

# Update dataset
dataset.name = 'training-data-v1'
dataset.update()

Team Collaboration Essentials 👥

1. Role Management

# Add team member with role
project.add_member(
    email='annotator@company.com',
    role=dl.MemberRole.Annotator
)

# Update member role
project.update_member(
    email='annotator@company.com',
    role=dl.MemberRole.Developer
)

2. Access Control

# List project members
members = project.members.list()
for member in members:
    print(f"{member.email}: {member.role}")

# Remove member
project.remove_member(email='ex-teammate@company.com')

Best Practices 👑

1. Project Organization

  • Use clear naming conventions
  • Add detailed descriptions
  • Maintain proper documentation
  • Tag resources appropriately

2. Security Practices

# Use environment variables
api_key = os.environ.get('DTLPY_API_KEY')

# Regular token refresh
if dl.token_expired():
    dl.refresh_token()

3. Resource Management

# Clean up unused resources
try:
    # Your code here
finally:
    # Logout when done
    dl.logout()

Troubleshooting Guide 🔧

Common Issues:

  1. Authentication Failures

    # Check token status
    print(dl.token_expired())
    
    # Force re-authentication
    dl.login_m2m(force=True)
  2. Project Access Issues

    # Verify project existence
    try:
        project = dl.projects.get(project_name='My-Project')
    except dl.exceptions.NotFound:
        print("Project not found!")
  3. Dataset Operations

    # Handle dataset errors
    try:
        dataset.update(description='New description')
    except dl.exceptions.Forbidden:
        print("Insufficient permissions!")

Ready to start working with data? Let's move on to data management! 🚀