Skip to content

Commit a535060

Browse files
Terraform Team Automationsagarp337
authored andcommitted
Added - Support for Generative AI Service - Lora Fine-Tuning Method
1 parent 80edb21 commit a535060

19 files changed

+418
-205
lines changed

examples/generative_ai/dadicated_ai_cluster.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,19 @@ resource "oci_generative_ai_dedicated_ai_cluster" "test_fine_tuning_cluster" {
2929
freeform_tags = var.test_freeform_tags
3030
}
3131

32+
resource "oci_generative_ai_dedicated_ai_cluster" "test_dedicated_ai_cluster_large_generic" {
33+
#Required
34+
type = "FINE_TUNING"
35+
compartment_id = var.compartment_ocid
36+
unit_count = var.fine_tuning_cluster_unit_count
37+
unit_shape = var.fine_tuning_large_generic_cluster_shape
38+
39+
#Optional
40+
display_name = var.llama_fine_tuning_cluster_display_name
41+
description = var.fine_tuning_cluster_description
42+
freeform_tags = var.test_freeform_tags
43+
}
44+
3245
data "oci_generative_ai_dedicated_ai_cluster" "test_hosting_cluster" {
3346
#Required
3447
dedicated_ai_cluster_id = oci_generative_ai_dedicated_ai_cluster.test_hosting_cluster.id
@@ -39,6 +52,12 @@ data "oci_generative_ai_dedicated_ai_cluster" "test_fine_tuning_cluster" {
3952
dedicated_ai_cluster_id = oci_generative_ai_dedicated_ai_cluster.test_fine_tuning_cluster.id
4053
}
4154

55+
56+
data "oci_generative_ai_dedicated_ai_cluster" "test_dedicated_ai_cluster_large_generic" {
57+
#Required
58+
dedicated_ai_cluster_id = oci_generative_ai_dedicated_ai_cluster.test_dedicated_ai_cluster_large_generic.id
59+
}
60+
4261
data "oci_generative_ai_dedicated_ai_clusters" "test_clusters" {
4362
#Required
4463
compartment_id = var.compartment_ocid

examples/generative_ai/model.tf

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
1+
resource "oci_generative_ai_model" "llama3_test_model" {
2+
#Required
3+
compartment_id = var.compartment_ocid
4+
base_model_id = local.llama_base_model_id
5+
fine_tune_details {
6+
dedicated_ai_cluster_id = data.oci_generative_ai_dedicated_ai_cluster.test_dedicated_ai_cluster_large_generic.id
7+
training_dataset {
8+
bucket = oci_objectstorage_bucket.fine_tune_bucket.name
9+
dataset_type = "OBJECT_STORAGE"
10+
namespace = data.oci_objectstorage_namespace.ns.namespace
11+
object = oci_objectstorage_object.fine_tune_object.object
12+
}
13+
training_config {
14+
training_config_type = "LORA_TRAINING_CONFIG"
15+
total_training_epochs = "3"
16+
learning_rate = "0.0002"
17+
training_batch_size = "8"
18+
early_stopping_patience = "15"
19+
early_stopping_threshold = "0.0001"
20+
log_model_metrics_interval_in_steps = "10"
21+
lora_r = "8"
22+
lora_alpha = "8"
23+
lora_dropout = "0.1"
24+
}
25+
}
26+
27+
#Optional
28+
display_name = var.llama3_test_model_display_name
29+
description = var.test_model_description
30+
vendor = var.test_model_vendor
31+
version = var.test_model_version
32+
#defined_tags not tested - cannot test in home region
33+
freeform_tags = var.test_freeform_tags
34+
}
35+
136
resource "oci_generative_ai_model" "test_model" {
237
#Required
338
compartment_id = var.compartment_ocid
@@ -20,7 +55,7 @@ resource "oci_generative_ai_model" "test_model" {
2055
description = var.test_model_description
2156
vendor = var.test_model_vendor
2257
version = var.test_model_version
23-
#defined_tags not tested - cannot test in home region
58+
#defined_tags not tested - cannot test in home region
2459
freeform_tags = var.test_freeform_tags
2560
}
2661

@@ -46,9 +81,22 @@ locals {
4681
]
4782

4883
cohere_base_model_id = local.filtered_base_models[0].id
84+
85+
llama_filtered_models = [
86+
for item in data.oci_generative_ai_models.llama_base_models.model_collection[0].items : item
87+
if (
88+
(item.version == "1.0.0")
89+
&& contains(item.capabilities, "FINE_TUNE")
90+
&& (item.display_name == "meta.llama-3-70b-instruct")
91+
)
92+
]
93+
94+
llama_base_model_id = local.llama_filtered_models[0].id
4995
}
50-
5196

97+
data "oci_generative_ai_models" "llama_base_models" {
98+
compartment_id = var.compartment_ocid
99+
}
52100

53101
data "oci_generative_ai_models" "base_models" {
54102
compartment_id = var.compartment_ocid

examples/generative_ai/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ variable "fine_tuning_cluster_display_name" {
2121
default = "fine_tuning_cluster"
2222
}
2323

24+
variable "llama_fine_tuning_cluster_display_name" {
25+
default = "fine_tuning_cluster_large_generic"
26+
}
27+
2428
variable "fine_tuning_cluster_description" {
2529
default = "this is a fine tuning cluster"
2630
}
@@ -29,6 +33,10 @@ variable "fine_tuning_cluster_shape" {
2933
default = "SMALL_COHERE"
3034
}
3135

36+
variable "fine_tuning_large_generic_cluster_shape" {
37+
default = "LARGE_GENERIC"
38+
}
39+
3240
variable "fine_tuning_cluster_unit_count" {
3341
default = "2"
3442
}
@@ -45,6 +53,10 @@ variable "test_model_display_name" {
4553
default = "test_model"
4654
}
4755

56+
variable "llama3_test_model_display_name" {
57+
default = "llama3_test_model"
58+
}
59+
4860
variable "test_model_description" {
4961
default = "test model"
5062
}

internal/integrationtest/generative_ai_dedicated_ai_cluster_test.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ var (
7171
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
7272
}
7373

74+
GenerativeAiLoraFineTuningDedicatedAiClusterRepresentation = map[string]interface{}{
75+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
76+
"type": acctest.Representation{RepType: acctest.Required, Create: `FINE_TUNING`},
77+
"unit_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
78+
"unit_shape": acctest.Representation{RepType: acctest.Required, Create: `LARGE_GENERIC`},
79+
"description": acctest.Representation{RepType: acctest.Optional, Create: `description`, Update: `description2`},
80+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `llama3testCluster`, Update: `displayName2`},
81+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
82+
}
83+
7484
GenerativeAiDedicatedAiClusterResourceDependencies = `` // Cannot test from home region due to GPU, commented out - DefinedTagsDependencies
7585
)
7686

@@ -211,7 +221,6 @@ func TestGenerativeAiDedicatedAiClusterResource_basic(t *testing.T) {
211221
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"),
212222
resource.TestCheckResourceAttrSet(datasourceName, "id"),
213223
resource.TestCheckResourceAttr(datasourceName, "state", "ACTIVE"),
214-
215224
resource.TestCheckResourceAttr(datasourceName, "dedicated_ai_cluster_collection.#", "1"),
216225
resource.TestCheckResourceAttr(datasourceName, "dedicated_ai_cluster_collection.0.items.#", "1"),
217226
),
@@ -223,7 +232,6 @@ func TestGenerativeAiDedicatedAiClusterResource_basic(t *testing.T) {
223232
compartmentIdVariableStr + GenerativeAiDedicatedAiClusterResourceConfig,
224233
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
225234
resource.TestCheckResourceAttrSet(singularDatasourceName, "dedicated_ai_cluster_id"),
226-
227235
resource.TestCheckResourceAttr(singularDatasourceName, "capacity.#", "1"),
228236
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
229237
resource.TestCheckResourceAttr(singularDatasourceName, "description", "description2"),

internal/integrationtest/generative_ai_endpoint_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ func TestGenerativeAiEndpointResource_basic(t *testing.T) {
237237
compartmentIdVariableStr + GenerativeAiEndpointResourceConfig,
238238
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
239239
resource.TestCheckResourceAttrSet(singularDatasourceName, "endpoint_id"),
240-
241240
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
242241
resource.TestCheckResourceAttr(singularDatasourceName, "content_moderation_config.#", "1"),
243242
resource.TestCheckResourceAttr(singularDatasourceName, "content_moderation_config.0.is_enabled", "true"),

0 commit comments

Comments
 (0)