G-gen ã®äœã
æšã§ããåœèšäºã§ã¯ãCloud Run ã«ããã GPU å©çšã®ãŠãŒã¹ã±ãŒã¹ãšããŠããªãŒãã³ LLM ã§ãã Gemma 3 ã Cloud Run ã®ãµãŒãã¹ã«ãããã€ããŠã¿ãŸãã åæç¥è Cloud Run ãµãŒãã¹ã®æŠèŠ Cloud Run ã«ããã GPU å©çš Gemma 3 Cloud Run ã«ãªãŒãã³ LLM ããããã€ããã¡ãªãã å©çšãã Gemma 3 ã¢ãã«ã®ãµã€ãºãšé
çœ®å Žæã«ã€ã㊠äºåæºå GPU ã®å²ãåœãŠå¢å ã·ã§ã«å€æ°ã®èšå® Artifact Registry ãªããžããªã®äœæ ãµãŒãã¹ã®ããã〠Dockerfile ã®æºå ã³ã³ããã€ã¡ãŒãžã®ãã«ã ãµãŒãã¹ã®ããã〠åäœç¢ºèª ãããã·çµç±ã§ãµãŒãã¹ã«æ¥ç¶ curl ã³ãã³ãã«ããç¢ºèª ã·ã§ã«ã¹ã¯ãªããã«ããã¹ããªãŒãã³ã°åºåã®åŠç ã¹ã¯ãªããã®å
容 ã·ã§ã«ã¹ã¯ãªããã®å®è¡ åæç¥è Cloud Run ãµãŒãã¹ã®æŠèŠ Cloud Run 㯠Google Cloud ã®ãããŒãžããªã³ã³ããå®è¡ç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããããšãã§ããããµãŒããŒã¬ã¹ ã³ã³ããã³ã³ãã¥ãŒãã£ã³ã° ãµãŒãã¹ã§ãã Cloud Run ã«ã¯ãCloud Run servicesãCloud Run jobsãCloud Run functionsïŒæ§ç§° Cloud FunctionsïŒãšãã£ãåé¡ããããŸãããåœèšäºã®å
容㯠HTTP ãªã¯ãšã¹ãããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ãã Cloud Run services ã«é¢ãããã®ãšãªããŸãã Cloud Run ã®è©³çްã«ã€ããŠã¯ã以äžã®èšäºããäžèªãã ããã blog.g-gen.co.jp Cloud Run ã«ããã GPU å©çš Cloud Run services ã§ã¯ GPU ã®å©çšããµããŒããããŠããããµãŒãã¹ã«å¯Ÿã㊠NVIDIA L4 GPU ã1ã€ã¢ã¿ããããããšãã§ããŸãã Cloud Run ã«ããã GPU ã®è©³çްã«ã€ããŠã¯ã以äžã®èšäºããäžèªãã ããã blog.g-gen.co.jp åè : GPU support for services Gemma 3 Gemma 㯠Google ã®ãã«ãã¢ãŒãã« LLMïŒå€§èŠæš¡èšèªã¢ãã«ïŒã§ãã Gemini ãšåæ§ã®ç ç©¶ãšæè¡ã«ãã£ãŠéçºãããã 軜éã®ãªãŒãã³ã¢ãã« ãã¡ããªãŒ ã§ãã ãã®äžã§ã Gemma 3 㯠Gemini åæ§ã®ãã«ãã¢ãŒãã«å¯Ÿå¿ã¢ãã«ã§ããKaggle ããã㯠Hugging Face ããã¢ãã«ãããŠã³ããŒããããªã³ãã¬ãã¹ãªã©ã®å€æ§ãªç°å¢ã«ãããã€ããããšãã§ããŸãã åè : Gemma models overview åè : Gemma 3 model overview Cloud Run ã«ãªãŒãã³ LLM ããããã€ããã¡ãªãã Gemini çã® API ããŒã¹ã® LLM ã®ä»£ããã«ãªãŒãã³ LLM ãéžæããçç±ãšããŠã以äžã®ãããªäŸãèããããŸãã å©çšæéãäºæž¬å¯èœã«ãããïŒAPI ããŒã¹ã® LLM ã¯ããŒã¯ã³åäœã®èª²éã§ãããããå©çšæã®äºæž¬ããã¥ããïŒ LLM ãžã®æšè«ãªã¯ãšã¹ãã®ã¬ã€ãã³ã·ãæããã ããã³ãããã€ã³ã¿ãŒãããçµç±ã§éä¿¡ããããªã ã¢ãã«ãèŠä»¶ã«åãããŠã«ã¹ã¿ãã€ãºïŒãã¡ã€ã³ãã¥ãŒãã³ã°ïŒããã äŸãã°ãGKE ã䜿çšã㊠Gemma ã®ãããªãªãŒãã³ LLM ã«ããæšè«ãµãŒãã¹ãå±éããå Žåãã¯ã©ã¹ã¿äžã®ä»ã®ãµãŒãã¹ããäœã¬ã€ãã³ã·ãã€ã»ãã¥ã¢ãªã¢ã¯ã»ã¹ãå¯èœãšãªããŸãã Google Cloud ã§ã¯ GKE Inference Quickstart ãšã㊠GKE ã¯ã©ã¹ã¿ã« LLM ããããã€ããããã®ãã¹ããã©ã¯ãã£ã¹ãæäŸãããŠããããªãŒãã³ LLM ã®ãããã€ã容æã«ãªã£ãŠããŸãã blog.g-gen.co.jp ãªãŒãã³ LLM ã GKE ã¯ã©ã¹ã¿äžã«å±éããå Žåãšæ¯èŒããŠãCloud Run ã§ã¯ ãŒãã¹ã±ãŒã« ã®ç¹åŸŽã掻ãããé«ããªããã¡ãª GPU ã®å©çšæãæå°éã«æããããšãã§ããŸãã GPU ãå©çšããå Žå㯠ã€ã³ã¹ã¿ã³ã¹ããŒã¹ã®èª²é ã®èšå®ãå¿
é ã®ããããªã¯ãšã¹ãåäœã®æéã¯çºçãããã€ã³ã¹ã¿ã³ã¹ãèµ·åããŠããéã® CPUãã¡ã¢ãªãGPU ã®å©çšæéã§æéãæ±ºãŸããŸãã åè : Billing settings for services å©çšãã Gemma 3 ã¢ãã«ã®ãµã€ãºãšé
çœ®å Žæã«ã€ã㊠Gemma 3 ã¯4ã€ã®ãµã€ãºïŒ 1B ã 4B ã 12B ã 27B ïŒãæäŸãããŠãããäžè¬çã«ã¯å€§ããªã¢ãã«ïŒ27B ãæå€§ïŒã®ã»ããæ§èœãé«ããªããŸãããã³ã³ãã¥ãŒããªãœãŒã¹ãã¹ãã¬ãŒãžã®äœ¿çšéã倧ãããªããŸãã Cloud Run ã®ã³ã³ããã€ã³ã¹ã¿ã³ã¹ã«ã¢ãã«ããã¹ãããå Žåãã¢ãã«ã®é
çœ®å ŽæãšããŠã¯ä»¥äžã®2ã€ãæšå¥šãããŠããŸãã ã³ã³ããã€ã¡ãŒãžã«çŽæ¥ã¢ãã«ãå«ãã Cloud Storage ãã±ããã«ã¢ãã«ãæ ŒçŽããã³ã³ããã€ã³ã¹ã¿ã³ã¹ã«ãã±ãããããŠã³ãããïŒããã㯠Cloud Storage API ãªã©ã§ããŒãããïŒ Cloud Run ã¯ãŒãã¹ã±ãŒã«ã®ç¹åŸŽã«ããããããã«ãŒãããã®ã³ã³ããã€ã³ã¹ã¿ã³ã¹ã®èµ·åãé«éåãããµãŒãã¹æäŸãå¯èœãªç¶æ
ã«ãããããéèŠãšãªããŸãããã®èгç¹ã§ã¯ãã€ã³ã¹ã¿ã³ã¹èµ·åã®ãã³ã« Cloud Storage ãã±ããããã¢ãã«ãããŒãããããããã³ã³ããã€ã¡ãŒãžã«ã¢ãã«ãã®ãã®ãå«ããã®ãçæ³çã§ãã ãããã䜿çšããã¢ãã«ã®ãµã€ãºã倧ããå Žåã¯ããããå«ããã³ã³ããã€ã¡ãŒãžãè¥å€§åããããšã§ãã³ã³ããã€ã³ã¹ã¿ã³ã¹ãžã®ã€ã¡ãŒãžã®ããŒããé·ããªã£ãŠããŸããçµæçã«èµ·åãé
ããªã£ãŠããŸããŸãã ãŸããCloud Run ã« GPU ãã¢ã¿ããããå Žåã24 GB ã® GPU ã¡ã¢ãªïŒCloud Run ã§èšå®ããã¡ã¢ãªå®¹éãšã¯å¥ïŒãå²ãåœãŠãããŸããããµã€ãºã®å€§ããã¢ãã«ã§ã¯ãã®å®¹éãè¶
ããŠããŸããã¡ã¢ãªäžè¶³ãšã©ãŒãšãªã£ãŠããŸããŸãã 以äžãèæ
®ããŠãåœèšäºã§ã¯2çªç®ã«å°ãããµã€ãºã® Gemma 3 4B ã¢ãã«ãã³ã³ããã€ã¡ãŒãžã«å«ãã圢åŒã§ãããã€ããŠãããŸãã ãã®ä»ãCloud Run ã§ GPU ã䜿çšã㊠ML ã¢ãã«ããããã€ããå Žåã®ãã¹ããã©ã¯ãã£ã¹ãå
¬åŒããã¥ã¡ã³ãã«èšèŒãããŠããã®ã§ããã¡ãããäžèªãã ããã åè : Best practices: AI inference on Cloud Run with GPUs äºåæºå GPU ã®å²ãåœãŠå¢å Cloud Run ã§ GPU ã䜿çšããå ŽåãCloud Run Admin API ã®ä»¥äžã®ããããã®å²ãåœãŠã®å¢å ãè¡ãå¿
èŠããããŸãã Total Nvidia L4 GPU allocation without zonal redundancy, per project per region Total Nvidia L4 GPU allocation with zonal redundancy, per project per region 2ã€ã®éã㯠zonal redundancy ïŒ ãŸãŒã³åé·æ§ ïŒã®æç¡ã§ããããwith zonal redundancyïŒãŸãŒã³åé·æ§ããïŒãã®å Žåã¯è€æ°ãŸãŒã³ã«ãŸããã GPU 容éãäºçŽããããŸãŒã³é害çºçæã®åã«ãŒãã£ã³ã°ãæ£åžžã«è¡ãããå¯èœæ§ãé«ããããšãã§ããŸãã ããã¯ãŸãŒã³åé·æ§ã確ä¿ãããåé¢ãGPU ã®ã³ã¹ããå¢å ããŠããŸããããããã§ã¯ãwithout zonal redundancyïŒãŸãŒã³åé·æ§ãªãïŒãã®å²ãåœãŠãéžæããŸãã åœèšäºã§ã¯ us-central1 ã® Total Nvidia L4 GPU allocation without zonal redundancy, per project per region ã®å²ãåœãŠãå¢å ããç¶æ
ã§é²ããŠãããŸãã Cloud Run ã«ããã GPU ã®å²ãåœãŠ åè : GPU support for services - Request a quota increase åè : GPU support for services - GPU zonal redundancy options ã·ã§ã«å€æ°ã®èšå® åœèšäºã§ã¯ gcloud CLI ã䜿çšããŠãµãŒãã¹ã®ãããã€ãè¡ã£ãŠãããŸãã ã³ãã³ãã§äœåºŠã䜿çšããå€ã«ã€ããŠã¯ã以äžã®ããã«ã·ã§ã«å€æ°ãšããŠèšå®ããŠãããŸãã LOCATION 倿°ã«ã¯ GPU ã®å²ãåœãŠãå¢å ãããªãŒãžã§ã³ãèšå®ããŸãã PROJECT_ID = < 䜿çšãããããžã§ã¯ãã®ID > LOCATION =us-central1 REPO_NAME =myrepo Artifact Registry ãªããžããªã®äœæ Cloud Run ã®ãµãŒãã¹ã¯ Artifact Registry ã«æ ŒçŽãããã³ã³ããã€ã¡ãŒãžã䜿çšããŠãããã€ãããããArtifact Registry ã®ãªããžããªãäœæããŠãããŸãã # Artifact Registry ãªããžããªãäœæãã $ gcloud artifacts repositories create ${REPO_NAME} \ --project = ${PROJECT_ID} \ --repository-format = docker \ --location = ${LOCATION} ãµãŒãã¹ã®ããã〠Dockerfile ã®æºå åœèšäºã§ã¯ä»¥äžã®ããã¥ã¡ã³ãã®ãã¥ãŒããªã¢ã«ãåèã«ããªãŒãã³ãœãŒã¹ã® LLM æšè«ãµãŒããŒã§ãã Ollama ã䜿çšããŸãã åè : Run LLM inference on Cloud Run GPUs with Gemma 3 and Ollama Dockerfile ã¯ãã¥ãŒããªã¢ã«ã®ãã®ããã®ãŸãŸå©çšããŸãã䜿çšããã¢ãã«å㯠MODEL=gemma3:4b ãšããŠç°å¢å€æ°ã«æ ŒçŽããŠããŸãã FROM ollama/ollama:latest # Listen on all interfaces, port 8080 ENV OLLAMA_HOST=0.0.0.0:8080 # Store model weight files in /models ENV OLLAMA_MODELS=/models # Reduce logging verbosity ENV OLLAMA_DEBUG=false # Never unload model weights from the GPU ENV OLLAMA_KEEP_ALIVE=-1 # Store the model weights in the container image ENV MODEL=gemma3:4b RUN ollama serve & sleep 5 && ollama pull $MODEL # Start Ollama ENTRYPOINT [ " ollama ", " serve " ] ã³ã³ããã€ã¡ãŒãžã®ãã«ã Cloud Build ã䜿çšããŠã³ã³ããã€ã¡ãŒãžã®ãã«ããè¡ããŸãã LLM ã¢ãã«ãã€ã¡ãŒãžã«å«ããããããã«ãã«ã¯æéãããããŸããåœèšäºã§ã¯ãã«ãã«äœ¿çšãããã·ã³ã¿ã€ãã倧ããã®ãã®ã«å€æŽããŠããŸãã # Cloud Build ã§ã³ã³ããã€ã¡ãŒãžããã«ãããïŒ5åã»ã©ãããïŒ $ gcloud builds submit \ --project = ${PROJECT_ID} \ --tag = ${LOCATION} -docker.pkg.dev/ ${PROJECT_ID} / ${REPO_NAME} /ollama-gemma \ --machine-type = e2-highcpu-32 åè : Increase vCPU for builds ãµãŒãã¹ã®ããã〠GPU ã䜿çšãã Cloud Run ã®ãµãŒãã¹ã¯ã以äžã®ãããªèŠä»¶ãæºããå¿
èŠããããŸãã Cloud Run ã®èšå®é
ç® èŠä»¶ ãªãŒãžã§ã³ GPU ããµããŒããããŠãããªãŒãžã§ã³ 課é ã€ã³ã¹ã¿ã³ã¹ ããŒã¹ CPU 4 vCPU 以äžïŒæšå¥šå€ã¯ 8 vCPUïŒ ã¡ã¢ãª 16 GiB 以äžïŒæšå¥šå€ã¯ 32 GiBïŒ æå€§ã€ã³ã¹ã¿ã³ã¹æ° ãããžã§ã¯ãããã³ãªãŒãžã§ã³ããšã® GPU å²ãåœãŠä»¥äžã®æ° ãããã®èŠä»¶ãèæ
®ãã以äžã®ã³ãã³ãã§ GPU ã䜿çšãããµãŒãã¹ããããã€ããŸãã # Cloud Run ã®ãµãŒãã¹ããããã€ãã $ gcloud run deploy ollama-gemma \ --image = ${LOCATION} -docker.pkg.dev/ ${PROJECT_ID} /myrepo/ollama-gemma \ --project = ${PROJECT_ID} \ --concurrency = 4 \ --cpu = 8 \ --set-env-vars = OLLAMA_NUM_PARALLEL = 4 \ --gpu = 1 \ --gpu-type = nvidia-l4 \ --region = ${LOCATION} \ --max-instances = 1 \ --memory = 32Gi \ --no-allow-unauthenticated \ --no-cpu-throttling \ --timeout = 600 \ --no-gpu-zonal-redundancy åäœç¢ºèª ãããã·çµç±ã§ãµãŒãã¹ã«æ¥ç¶ IAM èªèšŒãå¿
é ã®ãµãŒãã¹ãšããŠãããã€ãè¡ã£ãããããããã·çµç±ã§ localhost ãããµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã # Cloud Run ãããã·ãå®è¡ãã $ gcloud run services proxy ollama-gemma \ --port = 9090 \ --project = ${PROJECT_ID} \ --region = ${LOCATION} curl ã³ãã³ãã«ããç¢ºèª ãŸã㯠curl ã³ãã³ãã䜿çšã㊠Gemma 3 ã«ããã³ãããéä¿¡ããŠã¿ãŸãã # Gemma 3 ã«ããã³ãããéä¿¡ãã $ curl http://localhost:9090/api/generate -d ' { "model": "gemma3:4b", "prompt": "ããã«ã¡ã¯" } ' Gemma 3 ããã®ã¬ã¹ãã³ã¹ã¯ã以äžã®ããã«ã¹ããªãŒãã³ã°åºåãšããŠè¿ã£ãŠããŸãã # Gemma 3 ã®ã¬ã¹ãã³ã¹ïŒã¹ããªãŒãã³ã°ïŒ { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.104093641Z " , " response " : " ããã«ã¡ã¯ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.199941515Z " , " response " : " ïŒ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.215202668Z " , " response " : " äœã " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.231207445Z " , " response " : " ãæ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.247411829Z " , " response " : " äŒ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.263612725Z " , " response " : " ã " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.279771458Z " , " response " : " ã§ãã " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.295917737Z " , " response " : " ããšã¯ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.312203227Z " , " response " : " ãããŸã " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.328437964Z " , " response " : " ã " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.344459071Z " , " response " : " ïŒ " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.360634247Z " , " response " : " ð " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.376900745Z " , " response " : " \n " , " done " :false } { " model " : " gemma3:4b " , " created_at " : " 2025-04-28T14:32:50.393123072Z " , " response " : "" , " done " :true, " done_reason " : " stop " , " context " : [ 105 , 2364 , 107 , 85141 , 106 , 107 , 105 , 4368 , 107 , 85141 , 237354 , 98662 , 203956 , 239542 , 236985 , 17125 , 41277 , 17442 , 237116 , 237536 , 103453 , 107 ] , " total_duration " :10339392249, " load_duration " :8644663671, " prompt_eval_count " :10, " prompt_eval_duration " :1399382225, " eval_count " :14, " eval_duration " :290193270 } ã·ã§ã«ã¹ã¯ãªããã«ããã¹ããªãŒãã³ã°åºåã®åŠç ã¹ã¯ãªããã®å
容 ã·ã§ã«ã¹ã¯ãªããã§ Gemma 3 ããã®ã¹ããªãŒãã³ã°åºåãåŠçã§ããããã«ããŠã¿ãŸãã vi ã³ãã³ããªã©ã䜿çšããŠã·ã§ã«ã¹ã¯ãªãããäœæããŸããåœèšäºã§ã¯ãã¡ã€ã«åã gemma-client.sh ãšããŸãã ã·ã§ã«ã¹ã¯ãªããã®å
容ã¯ä»¥äžã®ããã«ããŸãã #!/bin/bash # LLM APIã®ãšã³ããã€ã³ãURL API_URL = " http://localhost:9090/api/generate " # 䜿çšããLLMã¢ãã«å MODEL_NAME = " gemma3:4b " # jqã³ãã³ããã€ã³ã¹ããŒã«ãããŠãããç¢ºèª if ! command -v jq &> /dev/null ; then echo " ãšã©ãŒ: jq ã³ãã³ããèŠã€ãããŸããã " >& 2 echo " ãã®ã¹ã¯ãªãããå®è¡ããã«ã¯ jq ãã€ã³ã¹ããŒã«ããŠãã ããã " >& 2 echo " äŸ: sudo apt update && sudo apt install jq (Debian/Ubuntu) " >& 2 echo " brew install jq (macOS) " >& 2 exit 1 fi echo " LLM ã¹ããªãŒãã³ã°ã¯ã©ã€ã¢ã³ã " echo " ãã€ã§ã Ctrl+C ã§çµäºã§ããŸãã " echo " ------------------------------------- " # ç¡éã«ãŒãã§ããã³ããå
¥åãåŸ
〠while true; do # ããã³ããã®å
¥åãæ±ãã echo -n " ããã³ãããå
¥åããŠãã ãã: " read user_prompt # å
¥åã空ã®å Žåã¯ã«ãŒããç¶ãã if [ -z " $user_prompt " ]; then echo " ããã³ãããå
¥åãããŸããã§ãããããäžåºŠè©ŠããŠãã ããã " continue fi echo echo " --- LLMããã®å¿ç --- " # jq ã䜿ã£ãŠå®å
šã«JSONãã€ããŒããäœæ # ããã«ãããããã³ããå
ã®ç¹æ®æåïŒåŒçšç¬Šãªã©ïŒãæ£ãããšã¹ã±ãŒãããã json_payload = $( jq -n \ --arg model " $MODEL_NAME " \ --arg prompt " $user_prompt " \ ' {model: $model, prompt: $prompt} ' ) # curlã§ãªã¯ãšã¹ããéä¿¡ããã¬ã¹ãã³ã¹ããã€ãã§åŠç # -s: 鲿ã¡ãã»ãŒãžã衚瀺ããªã # -N: ãããã¡ãªã³ã°ãç¡å¹ã«ããã¹ããªãŒãã³ã°ãå¯èœã«ãã curl -s -N -X POST " $API_URL " \ -H " Content-Type: application/json " \ -d " $json_payload " | \ while IFS = read -r line; do # ã¹ããªãŒã ãã1è¡ãã€èªã¿èŸŒã # lineã空ã§ãªãããšãç¢ºèª if [ -n " $line " ]; then # jqã䜿ã£ãŠã¬ã¹ãã³ã¹ãšå®äºãã©ã°ãæœåº # jqã«ç¡å¹ãªJSONãæž¡ãããå Žåã®ãšã©ãŒãæå¶ããããã« 2>/dev/null ã远å ããããšãæ€èš response_part = $( echo " $line " | jq -r ' .response ' 2 > /dev/null ) done_flag = $( echo " $line " | jq -r ' .done ' 2 > /dev/null ) # jqã®å®è¡ã«å€±æããå ŽåïŒäŸ: JSONãå£ããŠããïŒããšã©ãŒãåºåããŠæ¬¡ã®è¡ãž if [ $? -ne 0 ]; then echo " [èŠå] ç¡å¹ãªJSONè¡ãåä¿¡ããŸãã: $line " >& 2 continue fi # doneãã©ã°ãfalseã®å Žåãresponseã®å
容ã衚瀺 if [ " $done_flag " == " false " ]; then echo -n " $response_part " # doneãã©ã°ãtrueã®å Žåããã®å¿çã¹ããªãŒã ã¯çµäº elif [ " $done_flag " == " true " ]; then break fi fi done echo echo " -------------------- " echo done exit 0 ã·ã§ã«ã¹ã¯ãªããã®å®è¡ äœæããã·ã§ã«ã¹ã¯ãªãããå®è¡ããŸãã # ãã¡ã€ã«ã®å®è¡æš©éãç·šéãã $ chmod +x gemma-client.sh # ã·ã§ã«ã¹ã¯ãªãããå®è¡ãã $ ./gemma-client.sh ãã®ã·ã§ã«ã¹ã¯ãªããã¯ãå
¥åãããããã³ããã Gemma 3 ã«éä¿¡ããã¹ããªãŒãã³ã°ã§è¿ã£ãŠããã¬ã¹ãã³ã¹ãäžæåãã€è¡šç€ºããŸãã # å®è¡äŸ $ ./gemma-client.sh LLM ã¹ããªãŒãã³ã°ã¯ã©ã€ã¢ã³ã ãã€ã§ã Ctrl+C ã§çµäºã§ããŸãã ------------------------------------- ããã³ãããå
¥åããŠãã ãã: Cloud Runã 100 æåçšåºŠã§èª¬æã㊠--- LLMããã®å¿ç --- Cloud Runã¯ãã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ãç°¡åã«å®è¡ã§ãããµãŒããŒã¬ã¹ãã©ãããã©ãŒã ã§ããèªåã¹ã±ãŒãªã³ã°ãé«ãå¯çšæ§ãåŸé課éå¶ãšãã£ãã¡ãªããããããWebã¢ããªã±ãŒã·ã§ã³ãAPIã®ãããã€ã«æé©ã§ãã -------------------- äœã
æš é§¿å€ª (èšäºäžèЧ) G-genæå端ãåæµ·éåšäœã®ã¯ã©ãŠããœãªã¥ãŒã·ã§ã³éšãšã³ãžã㢠2022幎6æã«G-genã«ãžã§ã€ã³ãGoogle Cloud Partner Top Engineer 2025 Fellowã«éžåºã奜ããªGoogle Cloudãããã¯ãã¯Cloud Runã è¶£å³ã¯ã³ãŒããŒãå°èª¬ïŒSFããã¹ããªïŒãã«ã©ãªã±ãªã©ã Follow @sasashun0805