Skip to content

Commit

Permalink
squash commits
Browse files Browse the repository at this point in the history
Signed-off-by: Varun Gupta <[email protected]>
  • Loading branch information
varungup90 committed Feb 21, 2025
1 parent 3a50b27 commit 8f6fca3
Show file tree
Hide file tree
Showing 252 changed files with 12,675 additions and 1,765 deletions.
27 changes: 14 additions & 13 deletions .github/workflows/docker-push-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ jobs:
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Login to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# - name: Login to the Container registry
# uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
# with:
# registry: ghcr.io
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}

- name: Build Container Images
run: |
Expand All @@ -36,10 +36,11 @@ jobs:
run: |
make docker-push-all
- name: Build Container Images with Github Container Registry prefix
run: |
GIT_COMMIT_HASH=${{ github.sha }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-build-all
- name: Push Container Images to Github Container Registry
run: |
GIT_COMMIT_HASH=${{ github.sha }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-push-all
# TODO: Disable GHCR at this moment after org transfer, let's enable it later.
# - name: Build Container Images with Github Container Registry prefix
# run: |
# GIT_COMMIT_HASH=${{ github.sha }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-build-all
#
# - name: Push Container Images to Github Container Registry
# run: |
# GIT_COMMIT_HASH=${{ github.sha }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-push-all
2 changes: 1 addition & 1 deletion .github/workflows/installation-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ jobs:
- name: Set up testing environment
run: |
# Set up the cluster with kind or other Kubernetes environment needed
kind create cluster --name installation-test --config=./hack/kind_config.yaml
kind create cluster --name installation-test --config=./hack/ci/kind-config.yaml
kubectl cluster-info --context kind-installation-test
- name: Load image into Kind
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/release-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ jobs:
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

# Log in to Github Registry
- name: Login to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# - name: Login to the Container registry
# uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
# with:
# registry: ghcr.io
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}

# Build container images with docker registry namespace
- name: Build Container Images
Expand All @@ -48,14 +48,14 @@ jobs:
IS_MAIN_BRANCH=false GIT_COMMIT_HASH=${{ github.ref_name }} make docker-push-all
# Build container images with Github registry namespace
- name: Build Container Images with Github Container Registry prefix
run: |
IS_MAIN_BRANCH=false GIT_COMMIT_HASH=${{ github.ref_name }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-build-all
# - name: Build Container Images with Github Container Registry prefix
# run: |
# IS_MAIN_BRANCH=false GIT_COMMIT_HASH=${{ github.ref_name }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-build-all

# Push container image to Github container registry
- name: Push Container Images to Github Container Registry
run: |
IS_MAIN_BRANCH=false GIT_COMMIT_HASH=${{ github.ref_name }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-push-all
# - name: Push Container Images to Github Container Registry
# run: |
# IS_MAIN_BRANCH=false GIT_COMMIT_HASH=${{ github.ref_name }} AIBRIX_CONTAINER_REGISTRY_NAMESPACE=ghcr.io/aibrix make docker-push-all

python-wheel-release:
runs-on: ubuntu-latest
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,25 @@ please see the [Development Guide](development/README.md) in the `docs/developme

### 1. Understanding the Repository Structure

You can refer to the [Design Doc](https://github.com/aibrix/aibrix/tree/main/docs/tutorial) to quickly understand the layout of the AIBrix directory structure.
You can refer to the [Design Doc](https://github.com/vllm-project/aibrix/tree/main/docs/tutorial) to quickly understand the layout of the AIBrix directory structure.

### 2. Picking an Issue

Start by picking an [issue](https://github.com/aibrix/aibrix/issues) tagged with "good first issue" to get familiar with the project. Claim the issue by commenting to avoid duplicate efforts.
Start by picking an [issue](https://github.com/vllm-project/aibrix/issues) tagged with "good first issue" to get familiar with the project. Claim the issue by commenting to avoid duplicate efforts.

### 3. Submitting Codes

- **Creating Branches**: Use the following naming convention: `/<YOUR_NAME>/[feat|patch|bug_fix] description`
- **Making Commits**: Write detailed commit messages that explain your changes.
- **Pull Requests**:
- Create a pull request on [PR Page](https://github.com/aibrix/aibrix/pulls) against the master branch.
- Create a pull request on [PR Page](https://github.com/vllm-project/aibrix/pulls) against the master branch.
- Use the provided PR template to describe your changes.
- **Code Review Process**: Your PR will be reviewed by related contributors. Address feedback to improve and finalize your contribution.

## Advanced Contributions

- **Feature Proposals and Bug Reporting**: Report bugs or propose new features by creating an issue on our GitHub page. Provide as much detail as possible to facilitate discussions.
- **Contributing to Documentation**: Help improve our documentation by proposing changes to issue list. Our documentation is at [AIBrix Doc](https://github.com/aibrix/aibrix/tree/main/docs/tutorial)
- **Contributing to Documentation**: Help improve our documentation by proposing changes to issue list. Our documentation is at [AIBrix Doc](https://github.com/vllm-project/aibrix/tree/main/docs/tutorial)
- **Organizing Community Events**: If you are interested in organizing meetups or webinars, contact our community manager (TODO: contact information).

## Community and Communication
Expand Down
15 changes: 8 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust
.PHONY: generate
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."

./hack/update-codegen.sh go $(PROJECT_DIR)/bin

.PHONY: update-codegen
update-codegen:
sh ./hack/update-codegen.sh
Expand Down Expand Up @@ -137,7 +138,7 @@ define push_image
endef

.PHONY: docker-build-all
docker-build-all:
docker-build-all:
make -j $(nproc) docker-build-controller-manager docker-build-gateway-plugins docker-build-runtime docker-build-metadata-service ## Build all docker images

.PHONY: docker-build-controller-manager
Expand All @@ -157,7 +158,7 @@ docker-build-metadata-service: ## Build docker image with the metadata-service.
$(call build_and_tag,metadata-service,Dockerfile.metadata)

.PHONY: docker-push-all
docker-push-all:
docker-push-all:
make -j $(nproc) docker-push-controller-manager docker-push-gateway-plugins docker-push-runtime docker-push-metadata-service ## Push all docker images

.PHONY: docker-push-controller-manager
Expand Down Expand Up @@ -212,9 +213,9 @@ endif
.PHONY: install
install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | $(KUBECTL) apply -f -
## helm creates objects without aibrix prefix, hence deploying gateway components outside of kustomization
## helm creates objects without aibrix prefix, hence deploying gateway components outside of kustomization
$(KUBECTL) create -k config/dependency

.PHONY: uninstall
uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
$(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -k config/dependency
Expand All @@ -231,9 +232,9 @@ undeploy: kustomize ## Undeploy controller from the K8s cluster specified in ~/.
.PHONY: install-vke
install-vke: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | $(KUBECTL) apply -f -
## helm creates objects without aibrix prefix, hence deploying gateway components outside of kustomization
## helm creates objects without aibrix prefix, hence deploying gateway components outside of kustomization
$(KUBECTL) create -k config/overlays/vke/dependency

.PHONY: uninstall-vke
uninstall-vke: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
$(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -k config/overlays/vke/dependency
Expand Down
12 changes: 6 additions & 6 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ layout:
- go.kubebuilder.io/v4
multigroup: true
projectName: aibrix
repo: github.com/aibrix/aibrix
repo: github.com/vllm-project/aibrix
resources:
- api:
crdVersion: v1
Expand All @@ -16,7 +16,7 @@ resources:
domain: aibrix.ai
group: autoscaling
kind: PodAutoscaler
path: github.com/aibrix/aibrix/api/autoscaling/v1alpha1
path: github.com/vllm-project/aibrix/api/autoscaling/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
Expand All @@ -25,7 +25,7 @@ resources:
domain: aibrix.ai
group: model
kind: ModelAdapter
path: github.com/aibrix/aibrix/api/model/v1alpha1
path: github.com/vllm-project/aibrix/api/model/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
Expand All @@ -34,7 +34,7 @@ resources:
domain: aibrix.ai
group: orchestration
kind: RayClusterReplicaSet
path: github.com/aibrix/aibrix/api/orchestration/v1alpha1
path: github.com/vllm-project/aibrix/api/orchestration/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
Expand All @@ -43,7 +43,7 @@ resources:
domain: aibrix.ai
group: orchestration
kind: RayClusterFleet
path: github.com/aibrix/aibrix/api/orchestration/v1alpha1
path: github.com/vllm-project/aibrix/api/orchestration/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
Expand All @@ -52,6 +52,6 @@ resources:
domain: aibrix.ai
group: orchestration
kind: KVCache
path: github.com/aibrix/aibrix/api/orchestration/v1alpha1
path: github.com/vllm-project/aibrix/api/orchestration/v1alpha1
version: v1alpha1
version: "3"
23 changes: 15 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@ The initial release includes the following key features:
- **Distributed Inference**: Scalable architecture to handle large workloads across multiple nodes.
- **LLM App-Tailored Autoscaler**: Dynamically scale inference resources based on real-time demand.
- **Unified AI Runtime**: A versatile sidecar enabling metric standardization, model downloading, and management.
- **Distributed KV Cache**: Enables high-capacity, cross-engine KV reuse.
- **Cost-efficient Heterogeneous Serving**: Enables mixed GPU inference to reduce costs with SLO guarantees.
- **GPU Hardware Failure Detection (TBD)**: Proactive detection of GPU hardware issues.
- **Benchmark Tool (TBD)**: A tool for measuring inference performance and resource efficiency.

## Architecture

![aibrix-architecture-v1](docs/source/assets/images/aibrix-architecture-v1.jpeg)


## Quick Start
Expand All @@ -21,7 +26,7 @@ To get started with AIBrix, clone this repository and follow the setup instructi

```shell
# Local Testing
git clone https://github.com/aibrix/aibrix.git
git clone https://github.com/vllm-project/aibrix.git
cd aibrix

# Install nightly aibrix dependencies
Expand All @@ -34,26 +39,28 @@ kubectl create -k config/default
Install stable distribution
```shell
# Install component dependencies
kubectl create -k "github.com/aibrix/aibrix/config/dependency?ref=v0.2.0-rc.2"
kubectl create -k "github.com/vllm-project/aibrix/config/dependency?ref=v0.2.0"

# Install aibrix components
kubectl create -k "github.com/aibrix/aibrix/config/overlays/release?ref=v0.2.0-rc.2"
kubectl create -k "github.com/vllm-project/aibrix/config/overlays/release?ref=v0.2.0"
```

## Documentation

For detailed documentation on installation, configuration, and usage, please visit our [documentation page](https://github.com/aibrix/aibrix).
For detailed documentation on installation, configuration, and usage, please visit our [documentation page](https://aibrix.readthedocs.io/latest/).

## Contributing

We welcome contributions from the community! Check out our [contributing guidelines](https://github.com/aibrix/aibrix/CONTRIBUTING.md) to see how you can make a difference.
We welcome contributions from the community! Check out our [contributing guidelines](https://github.com/vllm-project/aibrix/CONTRIBUTING.md) to see how you can make a difference.

Slack Channel: https://vllm-dev.slack.com/archives/C07QP347J4D

## License

AIBrix is licensed under the [APACHE License](https://github.com/aibrix/aibrix/LICENSE.md).
AIBrix is licensed under the [APACHE License](https://github.com/vllm-project/aibrix/LICENSE.md).

## Support

If you have any questions or encounter any issues, please submit an issue on our [GitHub issues page](https://github.com/aibrix/aibrix/issues).
If you have any questions or encounter any issues, please submit an issue on our [GitHub issues page](https://github.com/vllm-project/aibrix/issues).

Thank you for choosing AIBrix for your GenAI infrastructure needs!
6 changes: 5 additions & 1 deletion api/autoscaling/v1alpha1/podautoscaler_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Expand Down Expand Up @@ -57,16 +56,19 @@ type PodAutoscalerSpec struct {
//PodSelector *metav1.LabelSelector `json:"podSelector,omitempty"`

// MinReplicas is the minimum number of replicas to which the target can be scaled down.
// +optional
MinReplicas *int32 `json:"minReplicas,omitempty"`

// MaxReplicas is the maximum number of replicas to which the target can be scaled up.
// It cannot be less than minReplicas
MaxReplicas int32 `json:"maxReplicas"`

// MetricsSources defines a list of sources from which metrics are collected to make scaling decisions.
// +kubebuilder:validation:MinItems=1
MetricsSources []MetricSource `json:"metricsSources,omitempty"`

// ScalingStrategy defines the strategy to use for scaling.
// +kubebuilder:validation:Enum={HPA,KPA,APA}
ScalingStrategy ScalingStrategyType `json:"scalingStrategy"`
}

Expand Down Expand Up @@ -103,8 +105,10 @@ const (
// MetricSource defines an endpoint and path from which metrics are collected.
type MetricSource struct {
// access an endpoint or scan a list of k8s pod
// +kubebuilder:validation:Enum={pod,domain}
MetricSourceType MetricSourceType `json:"metricSourceType"`
// http or https
// +kubebuilder:validation:Enum={http,https}
ProtocolType ProtocolType `json:"protocolType"`
// e.g. service1.example.com. meaningless for MetricSourceType.POD
Endpoint string `json:"endpoint,omitempty"`
Expand Down
3 changes: 1 addition & 2 deletions api/model/v1alpha1/modeladapter_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,14 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// ModelAdapterSpec defines the desired state of ModelAdapter
type ModelAdapterSpec struct {

// BaseModel is the identifier for the base model to which the ModelAdapter will be attached.
// +optional
BaseModel string `json:"baseModel,omitempty"`
BaseModel *string `json:"baseModel,omitempty"`

// PodSelector is a label query over pods that should match the ModelAdapter configuration.
// +kubebuilder:validation:Required
Expand Down
5 changes: 5 additions & 0 deletions api/model/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions api/orchestration/v1alpha1/kvcache_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type ServiceConfig struct {

// NodePort specifies the port on each node on which this service is exposed when using NodePort type.
// +kubebuilder:validation:Optional
NodePort int32 `json:"nodePort,omitempty"`
NodePort *int32 `json:"nodePort,omitempty"`
}

// MetadataConfig holds the configuration about the kv cache metadata service
Expand Down Expand Up @@ -95,7 +95,7 @@ type CacheSpec struct {

// the memory resources of kvcache container
// +kubebuilder:validation:Optional
// +kubebuilder:default:="2"
// +kubebuilder:default:="2Gi"
Memory string `json:"memory,omitempty"`

// the cpu resources of kvcache container
Expand Down
5 changes: 4 additions & 1 deletion api/orchestration/v1alpha1/rayclusterfleet_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

// RayClusterFleetSpec defines the desired state of RayClusterFleet
type RayClusterFleetSpec struct {
// Number of desired pods. This is a pointer to distinguish between explicit
// zero and not specified. Defaults to 1.
// +kubebuilder:default=1
// +optional
Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`

Expand All @@ -55,6 +55,7 @@ type RayClusterFleetSpec struct {
// The number of old ReplicaSets to retain to allow rollback.
// This is a pointer to distinguish between explicit zero and not specified.
// Defaults to 10.
// +kubebuilder:default=10
// +optional
RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"`

Expand All @@ -67,6 +68,8 @@ type RayClusterFleetSpec struct {
// process failed deployments and a condition with a ProgressDeadlineExceeded
// reason will be surfaced in the deployment status. Note that progress will
// not be estimated during the time a deployment is paused. Defaults to 600s.
// +kubebuilder:default=600
// +optional
ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"`
}

Expand Down
Loading

0 comments on commit 8f6fca3

Please sign in to comment.