Skip to content

Commit

Permalink
[DecoupledLionW8Bit] [zeta.cli][zeta.main][zeta cloud]
Browse files Browse the repository at this point in the history
  • Loading branch information
Kye committed Dec 20, 2023
1 parent 4748f67 commit bdc229a
Show file tree
Hide file tree
Showing 17 changed files with 1,182 additions and 14 deletions.
103 changes: 103 additions & 0 deletions docs/corporate/zeta_cloud.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,106 @@ The estimated timeline for shipping Zeta Cloud is as follows:
| API Access for Third-Party Integrations | Providing API access for integration with other tools and services. | Developers, businesses needing integrations. | Monthly/Annual subscription or pay-per-use. |




# GTM - Go To Market

### **Contents**

1. Positioning Statement
2. Early Adopter Segments
3. Branding
4. Channel Strategy
5. Initial Marketing Methods
6. Testing Plan
7. LTV/CAC

---

### **1. Positioning Statement**

*For AI engineers and data scientists who struggle with the complexities of model training and deployment, Zeta Cloud is a new cloud-based AI service that simplifies these processes. Unlike traditional cloud services, we offer an automated, user-friendly platform with a strong focus on accessibility and efficiency.*

---

### **2. Early Adopter Segments**

**Segment Characteristics:**
- Demographics: AI engineers and data scientists in mid-sized tech companies and startups.
- Unmet Needs: Simplification of AI model deployment, efficient resource management, cost-effective scaling.
- Behaviors: Active users of cloud computing services, frequent participants in tech forums and communities.
- Psychographics: Value innovation, efficiency, and user-friendly interfaces.
- Multi-party Decision Making: End users (engineers and scientists), economic buyers (company executives), and key influencers (tech thought leaders and industry experts).

**Implications for Targeted Marketing:**
- Focused engagement in tech forums and communities.
- Tailored content marketing addressing specific needs and pain points.
- Leveraging influencers and thought leaders to reach decision-makers.

---

### **3. Branding**

**Strengths of Product Name:**
- 'Zeta Cloud' conveys a sense of technological advancement and cloud-based efficiency.

**Brand Association Words:**
- Innovative, Efficient, User-Friendly, Accessible, Empowering, Reliable.

**Aspirational Brand Similarities:**
- Brands like AWS, Google Cloud, and Azure for their technological prowess and market presence.

---

### **4. Channel Strategy**

**Channels:**
- Own Website: Primary channel for direct sales and customer engagement.
- Sales Force: Blend of inside sales for smaller accounts and field sales for larger, enterprise-level deals.
- Channel Partners: Collaborations with tech marketplaces and value-added resellers.

**Partner Responsibilities and Margins:**
- Education and initial engagement by Zeta Cloud, with partners focusing on closing sales and after-sales service.
- Attractive margins to incentivize partner engagement and commitment.

---

### **5. Initial Marketing Methods**

**Hypothesized Effective Methods:**
1. **Content Marketing:** Strength - establishes thought leadership; Weakness - time-intensive.
2. **Social Media and Community Engagement:** Strength - builds brand awareness; Weakness - requires consistent, high-quality engagement.
3. **Paid Digital Advertising (e.g., Google Ads, LinkedIn):** Strength - targets specific segments; Weakness - can be costly.

**Performance Metrics:**
- Engagement rates, conversion rates, customer acquisition costs.

**Secondary Marketing Methods:**
- Email marketing, PR activities, and webinars; secondary due to longer lead times and higher resource requirements.

---

### **6. Testing Plan**

**Completed Tests:**
- Initial A/B testing on website messaging and layout.

**Upcoming Tests:**
- Content marketing effectiveness: Measuring engagement and conversion rates from different content types.
- Social media ad campaigns: Assessing customer acquisition costs and conversion rates.
- Budget for tests: Approximately $20,000 over three months.

---

### **7. LTV/CAC**

**LTV Targets:**
- Average annual revenue per customer: $5,000.
- Variable contribution margin: 70%.
- Retention rate: 85% annually.

**CAC Projections:**
- Mix of free and paid methods: 40% free methods (referrals), 60% paid methods.
- Viral coefficient: 0.5.
- CAC for paid methods: $500 - $1,000, varying by channel.

8 changes: 6 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "zetascale"
version = "0.9.9"
version = "1.1.6"
description = "Transformers at zeta scales"
authors = ["Zeta Team <kye@apac.ai>"]
license = "MIT"
Expand Down Expand Up @@ -40,6 +40,9 @@ beartype = "0.16.4"
tiktoken = "0.5.2"
tqdm = "4.66.1"
rich = "13.7.0"
argparse = "^1.4.0"
skypilot = "0.4.1"


[build-system]
requires = ["poetry-core>=1.0.0"]
Expand Down Expand Up @@ -73,6 +76,7 @@ preview = true




[tool.poetry.scripts]
zeta = 'zeta.cli.main:main'


3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@ torchaudio==2.1.2
mkdocs
mkdocs-material
mkdocs-glightbox
glightbox
skypilot==0.4.1
argparse
101 changes: 101 additions & 0 deletions tests/cloud/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import pytest
from unittest.mock import MagicMock, patch
from zeta.cloud.main import zetacloud


@patch("zeta.cloud.main.skyapi")
@patch("zeta.cloud.main.logger")
def test_zetacloud_basic(mock_logger, mock_skyapi):
# Arrange
mock_task = MagicMock()
mock_skyapi.create_task.return_value = mock_task

# Act
zetacloud(task_name="test_task")

# Assert
mock_skyapi.create_task.assert_called_once_with(
name="test_task",
setup="pip install requirements.txt",
run="python train.py",
workdir=".",
)
mock_logger.info.assert_called_with(
"Task: {} has been created".format(mock_task)
)
mock_task.set_resources.assert_called_once()
mock_skyapi.launch.assert_called_once_with(mock_task, "[ZetaTrainingRun]")


# ... replicate this test with different arguments for thoroughness


@patch("zeta.cloud.main.skyapi")
@patch("zeta.cloud.main.logger")
def test_zetacloud_with_stop(mock_logger, mock_skyapi):
# Arrange
mock_task = MagicMock()
mock_skyapi.create_task.return_value = mock_task

# Act
zetacloud(task_name="test_task", stop=True)

# Assert
mock_skyapi.stop.assert_called_once_with("[ZetaTrainingRun]")
mock_logger.info.assert_called_with(
"Cluster: [ZetaTrainingRun] has been stopped"
)


@patch("zeta.cloud.main.skyapi")
@patch("zeta.cloud.main.logger")
def test_zetacloud_with_down(mock_logger, mock_skyapi):
# Arrange
mock_task = MagicMock()
mock_skyapi.create_task.return_value = mock_task

# Act
zetacloud(task_name="test_task", down=True)

# Assert
mock_skyapi.down.assert_called_once_with("[ZetaTrainingRun]")
mock_logger.info.assert_called_with(
"Cluster: [ZetaTrainingRun] has been deleted"
)


@patch("zeta.cloud.main.skyapi")
@patch("zeta.cloud.main.logger")
def test_zetacloud_with_status_report(mock_logger, mock_skyapi):
# Arrange
mock_task = MagicMock()
mock_skyapi.create_task.return_value = mock_task

# Act
zetacloud(task_name="test_task", status_report=True)

# Assert
mock_skyapi.status.assert_called_once_with(
cluster_names=["[ZetaTrainingRun]"]
)
mock_logger.info.assert_called_with(
"Cluster: [ZetaTrainingRun] has been reported on"
)


@patch("zeta.cloud.main.skyapi")
@patch("zeta.cloud.main.logger")
def test_zetacloud_with_exception(mock_logger, mock_skyapi):
# Arrange
mock_skyapi.create_task.side_effect = Exception("Test exception")

# Act
with pytest.raises(Exception):
zetacloud(task_name="test_task")

# Assert
mock_logger.error.assert_called_once()


# ... replicate similar tests with minor changes for thoroughness
# Examples: test different cloud providers, test other parameter combinations, etc.
8 changes: 2 additions & 6 deletions tests/nn/modules/test_image_projector.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,17 +249,13 @@ def test_patch_projector_output_shape_consistency(sample_input_tensor):
# Test case for edge case: invalid max_patch_size
def test_patch_projector_invalid_max_patch_size():
with pytest.raises(ValueError):
ImagePatchCreatorProjector(
max_patch_size=0, embedding_dim=768
)
ImagePatchCreatorProjector(max_patch_size=0, embedding_dim=768)


# Test case for edge case: invalid embedding_dim
def test_patch_projector_invalid_embedding_dim():
with pytest.raises(ValueError):
ImagePatchCreatorProjector(
max_patch_size=16, embedding_dim=0
)
ImagePatchCreatorProjector(max_patch_size=16, embedding_dim=0)


# Test case for edge case: invalid input tensor shape
Expand Down
4 changes: 1 addition & 3 deletions tests/ops/test_einops_poly.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,7 @@ def test_reduce_many_with_sum_reduction():
# Additional tests for rearrange_with_anon_dims function
def test_rearrange_with_anon_dims_invalid_dim_list():
with pytest.raises(ValueError):
rearrange_with_anon_dims(
input_data, pattern="...a b c", a=(1,)
)
rearrange_with_anon_dims(input_data, pattern="...a b c", a=(1,))


def test_rearrange_with_anon_dims_invalid_pattern():
Expand Down
Loading

0 comments on commit bdc229a

Please sign in to comment.