diff --git a/frontend/src/concepts/pipelines/NoPipelineServer.tsx b/frontend/src/concepts/pipelines/NoPipelineServer.tsx index b9c42898f2..7d596a4626 100644 --- a/frontend/src/concepts/pipelines/NoPipelineServer.tsx +++ b/frontend/src/concepts/pipelines/NoPipelineServer.tsx @@ -18,8 +18,12 @@ const NoPipelineServer: React.FC = ({ return ( = ({ } /> diff --git a/frontend/src/pages/modelServing/screens/projects/EmptyMultiModelServingCard.tsx b/frontend/src/pages/modelServing/screens/projects/EmptyMultiModelServingCard.tsx index 5fbd32eba2..8232e2bd28 100644 --- a/frontend/src/pages/modelServing/screens/projects/EmptyMultiModelServingCard.tsx +++ b/frontend/src/pages/modelServing/screens/projects/EmptyMultiModelServingCard.tsx @@ -61,8 +61,9 @@ const EmptyMultiModelServingCard: React.FC = ({ allowCr - Multiple models can be deployed from a single model server. Choose this option when you - have a large number of small models to deploy that can share server resources. + Multiple models can be deployed on one shared model server. Choose this option when you + want to deploy a number of small or medium-sized models that can share the server + resources. {allowCreate ? ( diff --git a/frontend/src/pages/modelServing/screens/projects/EmptySingleModelServingCard.tsx b/frontend/src/pages/modelServing/screens/projects/EmptySingleModelServingCard.tsx index 7226e1c5a0..45076e743a 100644 --- a/frontend/src/pages/modelServing/screens/projects/EmptySingleModelServingCard.tsx +++ b/frontend/src/pages/modelServing/screens/projects/EmptySingleModelServingCard.tsx @@ -67,8 +67,8 @@ const EmptySingleModelServingCard: React.FC = - Each model is deployed from its own model server. Choose this option when you have a small - number of large models to deploy. + Each model is deployed on its own model server. Choose this option when you want to deploy + a large model such as a large language model (LLM). {allowCreate ? ( diff --git a/frontend/src/pages/modelServing/screens/projects/ModelServingPlatform.tsx b/frontend/src/pages/modelServing/screens/projects/ModelServingPlatform.tsx index 17f58759e1..674457bab8 100644 --- a/frontend/src/pages/modelServing/screens/projects/ModelServingPlatform.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ModelServingPlatform.tsx @@ -92,6 +92,43 @@ const ModelServingPlatform: React.FC = () => { } }; + const renderPlatformEmptyState = () => { + if (kServeEnabled || modelMeshEnabled) { + return ( + { + setPlatformSelected( + isProjectModelMesh ? ServingRuntimePlatform.MULTI : ServingRuntimePlatform.SINGLE, + ); + }} + key={`${isProjectModelMesh ? 'multi' : 'single'}-serving-actions`} + /> + } + icon={isProjectModelMesh ? PlusCircleIcon : undefined} + /> + ); + } + + return ( + + ); + }; + return ( <> { } description={ shouldShowPlatformSelection && emptyModelServer - ? 'Select the type of model serving platform to be used when deploying models in this project.' + ? 'Select the model serving type to be used when deploying models from this project.' : undefined } popover={ } @@ -137,7 +174,7 @@ const ModelServingPlatform: React.FC = () => { isEmpty={shouldShowPlatformSelection} loadError={platformError || servingRuntimeError || templateError} emptyState={ - kServeEnabled || modelMeshEnabled ? ( + kServeEnabled && modelMeshEnabled ? ( { variant="info" isInline isPlain - title="Your project can only support one platform" - > -

- Choose a platform that best fits your needs. Changes cannot be made once a model - has deployed. -

- + title="The model serving type can be changed until the first model is deployed from this project. After that, if you want to use a different model serving type, you must create a new project." + />
) : ( @@ -187,10 +219,7 @@ const ModelServingPlatform: React.FC = () => { } > {emptyModelServer ? ( - + renderPlatformEmptyState() ) : isProjectModelMesh ? ( ) : ( diff --git a/frontend/src/pages/modelServing/screens/projects/ModelServingPlatformSelect.tsx b/frontend/src/pages/modelServing/screens/projects/ModelServingPlatformSelect.tsx index 2b0ec4644a..03a014848b 100644 --- a/frontend/src/pages/modelServing/screens/projects/ModelServingPlatformSelect.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ModelServingPlatformSelect.tsx @@ -31,7 +31,8 @@ const ModelServingPlatformSelect: React.FC = ({ return ( - Select the type of model serving platform to be used when deploying models in this project. + Select the type of model serving platform to be used when deploying models from this + project. diff --git a/frontend/src/pages/projects/screens/detail/data-connections/DataConnectionsList.tsx b/frontend/src/pages/projects/screens/detail/data-connections/DataConnectionsList.tsx index 11b7c923ee..87cf0a90e0 100644 --- a/frontend/src/pages/projects/screens/detail/data-connections/DataConnectionsList.tsx +++ b/frontend/src/pages/projects/screens/detail/data-connections/DataConnectionsList.tsx @@ -38,7 +38,7 @@ const DataConnectionsList: React.FC = () => { !isDataConnectionsEmpty && ( } @@ -67,7 +67,7 @@ const DataConnectionsList: React.FC = () => { emptyState={ { !isNotebooksEmpty && ( } @@ -68,7 +68,7 @@ const NotebookList: React.FC = () => { emptyState={ { sectionType={SectionType.setup} imgSrc={typedObjectImage(ProjectObjectType.dataConnection)} title="Data connections" - description="For projects that use very large data sets, you can use data connections to link your project to an object storage bucket." + description="You can add data connections to workbenches to connect your project to data inputs and object storage buckets. You can also use data connections to specify the location of your models during deployment." isOpen={open} onClick={() => navigate( diff --git a/frontend/src/pages/projects/screens/detail/overview/serverModels/PlatformSelectSection.tsx b/frontend/src/pages/projects/screens/detail/overview/serverModels/PlatformSelectSection.tsx index bf3a79d579..a6d845de80 100644 --- a/frontend/src/pages/projects/screens/detail/overview/serverModels/PlatformSelectSection.tsx +++ b/frontend/src/pages/projects/screens/detail/overview/serverModels/PlatformSelectSection.tsx @@ -31,7 +31,7 @@ const PlatformSelectSection: React.FC = () => ( diff --git a/frontend/src/pages/projects/screens/detail/overview/trainModels/NotebooksCard.tsx b/frontend/src/pages/projects/screens/detail/overview/trainModels/NotebooksCard.tsx index 7b1036b9a9..2744178f61 100644 --- a/frontend/src/pages/projects/screens/detail/overview/trainModels/NotebooksCard.tsx +++ b/frontend/src/pages/projects/screens/detail/overview/trainModels/NotebooksCard.tsx @@ -97,7 +97,7 @@ const NotebooksCard: React.FC = () => { sectionType={SectionType.training} title="Workbenches" popoverHeaderContent="About workbenches" - popoverBodyContent="Creating a workbench allows you to add a Jupyter notebook to your project." + popoverBodyContent="A workbench is an isolated area where you can work with models in your preferred IDE, such as a Jupyter notebook. You can add accelerators and data connections, create pipelines, and add cluster storage in your workbench." > @@ -152,7 +152,7 @@ const NotebooksCard: React.FC = () => { sectionType={SectionType.training} title="Workbenches" popoverHeaderContent="About workbenches" - popoverBodyContent="Creating a workbench allows you to add a Jupyter notebook to your project." + popoverBodyContent="A workbench is an isolated area where you can work with models in your preferred IDE, such as a Jupyter notebook. You can add accelerators and data connections, create pipelines, and add cluster storage in your workbench." > { - Pipelines are machine-learning workflows that you can use to train your model. To - create or import pipelines, you must first configure a pipeline server. + Pipelines are platforms for building and deploying portable and scalable + machine-learning (ML) workflows. You can import a pipeline or create one in a + workbench. Before you can work with pipelines, you must first configure a pipeline + server in your project. + + + If you've already created pipelines in a workbench, restart the workbench after + configuring the pipeline server to view your pipelines here. @@ -183,7 +189,9 @@ const PipelinesCard: React.FC = () => { - Pipelines are machine-learning workflows that you can use to train your model. + Pipelines are platforms for building and deploying portable and scalable + machine-learning (ML) workflows. You can import a pipeline or create one in a + workbench. @@ -213,7 +221,7 @@ const PipelinesCard: React.FC = () => { popoverHeaderContent={!pipelinesCount ? 'About pipelines' : undefined} popoverBodyContent={ !pipelinesCount - ? 'Standardize and automate machine learning workflows to enable you to further enhance and deploy your data science models.' + ? 'Pipelines are platforms for building and deploying portable and scalable machine-learning (ML) workflows. You can import a pipeline or create one in a workbench.' : undefined } data-testid="section-pipelines" diff --git a/frontend/src/pages/projects/screens/detail/pipelines/PipelinesSection.tsx b/frontend/src/pages/projects/screens/detail/pipelines/PipelinesSection.tsx index d5ee7b9a7e..12a70e3d70 100644 --- a/frontend/src/pages/projects/screens/detail/pipelines/PipelinesSection.tsx +++ b/frontend/src/pages/projects/screens/detail/pipelines/PipelinesSection.tsx @@ -60,7 +60,7 @@ const PipelinesSection: React.FC = () => { installed ? ( } diff --git a/frontend/src/pages/projects/screens/detail/storage/StorageList.tsx b/frontend/src/pages/projects/screens/detail/storage/StorageList.tsx index 1f8ea8ce91..44ceaf67f3 100644 --- a/frontend/src/pages/projects/screens/detail/storage/StorageList.tsx +++ b/frontend/src/pages/projects/screens/detail/storage/StorageList.tsx @@ -35,7 +35,7 @@ const StorageList: React.FC = () => { popover={ } @@ -58,7 +58,7 @@ const StorageList: React.FC = () => { emptyState={