AWS Servisleri İle Replicate Üzerindeki Modelleri Kullanma
Bu projede temel amacımız, AWS Lambda servisleri aracılığıyla Replicate üzerinde bulunan TencentArc/GFPGAN modeline görüntü göndermek…
AWS Servisleri İle Replicate Üzerindeki Modelleri Kullanma

Bu projede temel amacımız, AWS Lambda servisleri aracılığıyla Replicate üzerinde bulunan TencentArc/GFPGAN modeline görüntü göndermek, modeli çalıştırarak elde edilen sonuçları almak ve ardından bu sonuçları Amazon S3 bucketlarına kaydetmektir. AWS Lambda servisinin sunduğu esnek yapı ve kullandıkça öde modeli sayesinde, kaynakları daha verimli kullanmak amacıyla projemizde bu servisi tercih ettik.
Projenin çalışma akışında ilk olarak, kullanıcılar tarafından sağlanan görüntüyü base64 formatına dönüştürerek API Gateway aracılığıyla AWS Lambda fonksiyonuna iletiyoruz. Bu işlem, görüntü işleme sürecini başlatır ve projenin temel fonksiyonlarını devreye sokar. İlk Lambda fonksiyonu, aldığı görüntüyü “Replicate” üzerindeki ilgili modellere yönlendirdikten sonra görevini tamamlar.
Ardından ikinci Lambda fonksiyonu devreye girerek “Replicate” üzerindeki modellerden gelen sonuçları alır ve bu sonuçları API Gateway aracılığıyla kullanıma sunar. Bu yaklaşım sayesinde Lambda fonksiyonları sadece çalıştıkları süre kadar ücretlendirilir ve gereksiz bekleme süreleri ortadan kalkar. Böylece proje daha etkin ve maliyet açısından daha verimli hale gelir.

AWS Lambda Servisi Oluşturma
AWS Lambda servisini oluşturmak için öncelikle AWS Management Console’a giriş yapın. Ardından üst menüde bulunan “Services” sekmesine tıklayın ya da arama alanına “Lambda” yazarak ilgili servisi seçin. Açılan sayfada “Create function” (İşlev Oluştur) butonuna basın.

Daha sonra, oluşturacağınız Lambda işlevinin adını, programlama dilini ve rolünü içeren bilgileri doldurun ve gerekli ayarları seçin. Bilgileri girdikten sonra tekrar “Create function” (İşlev Oluştur) butonuna basarak Lambda servisini oluşturma işlemini tamamlayabilirsiniz.

AWS Lambda Servisine Tetikleyici Ekleme
Lambda servisine tetikleyici ekleyebilmek için önce tetikleyici olarak kullanılacak servisi oluşturmanız gerekir. Bu projede tetikleyici olarak AWS API Gateway kullanılacaktır. API Gateway servisini oluşturmak için AWS Management Console’a giriş yaptıktan sonra, arama kutusuna “API Gateway” yazıp ilgili servisi seçin. Açılan sayfada “Create API” düğmesine tıklayın.

Bu projede API türü olarak HTTP API kullanılacaktır. “Create API” düğmesine bastıktan sonra gelen ekranda “HTTP API” bölümündeki “Build” düğmesine tıklayın. Daha sonra API için bir isim belirleyip “Next” düğmesine basarak sonraki adıma geçin. Son olarak “Create” düğmesine basarak API Gateway servisini oluşturma işlemini tamamlayabilirsiniz.

API Gateway servisini oluşturduktan sonra, bu servisi Lambda işlevinizde tetikleyici olarak ayarlamak için AWS Lambda Console sayfasına giderek daha önce oluşturduğunuz Lambda işlevini açın ve “Add Trigger” (Tetikleyici Ekle) düğmesine basın.

“Add Trigger” düğmesine tıkladıktan sonra açılan ekranda tetikleyici olarak API Gateway’i seçin. Daha önce oluşturduğunuz API Gateway servisini kullanmak için “Use existing API” seçeneğini işaretleyin, ilgili API’yı seçin ve ardından “Add” (Ekle) düğmesine basarak tetikleyici ekleme işlemini tamamlayın.

AWS API Gateway Servisine Veri Yollama
AWS API Gateway, uygulamalar ve sistemler arasında hızlı ve güvenli şekilde veri iletimi sağlayan güçlü bir hizmettir. Örneğin, web uygulamalarından gelen kullanıcı bilgilerini veya istemciden alınan çeşitli verileri API Gateway aracılığıyla AWS Lambda fonksiyonlarına kolayca aktarabilirsiniz.
API Gateway üzerinden gönderilen verilerin yapısı uygulamanın gereksinimlerine göre değişebilir. Ancak çoğunlukla bu veriler, HTTP yöntemleriyle (örneğin, POST veya PUT isteğiyle) gönderilir ve isteğin gövdesinde JSON veya XML gibi formatlarda yapılandırılır. Aşağıda, API Gateway’e JSON formatında gönderilen bir veri örneği yer almaktadır.
{
"kullaniciAdi": "ornek_kullanici",
"email": "ornek@example.com",
"yas": 30,
"mesaj": "Merhaba, bu bir örnek mesajdır."
}
Projemizde veri olarak bir görüntü göndermek istediğimiz için önce görüntüyü base64 formatına dönüştürüyoruz ve ardından ‘API Gateway’ servisine iletiyoruz. Aşağıdaki Python kod örneği, ‘API Gateway’ servisine nasıl görüntü gönderileceğini göstermektedir.
import base64
import requests
def convert_base64(img_path):
with open(image_path , "rb") as image_file:
image_data = image_file.read()
return base64.b64encode(image_data).decode("utf-8")
def send_image(img_path, api_gateway_url):
request_data = {
"image": convert_base64(img_path)
}
response = requests.post(api_gateway_url, json=request_data)
if response.status_code == 200:
print("Resim başarıyla yüklendi.")
else:
print(f"Resim yükleme hatası: {response.status_code}")
if __name__ == "__main__":
image_path = "./deneme.jpg"
api_gateway_url = "https://8tldf2jx1c.execute-api.eu-central1.amazonaws.com/cagdasblog"
send_image(image_path, api_gateway_url)
API Gateway servisinin URL’ine ulaşmak için AWS Lambda sayfasında “Configuration” (Yapılandırma) sekmesine gidin, ardından açılan menüden “Triggers” (Tetikleyiciler) bölümüne geçerek tetikleyicinizin “API endpoint” bilgisini alın.

AWS Lambda ile Görüntülerin Replicate Üzerindeki Modellere Gönderilmesi
Yerel cihazımızdaki görüntüler base64 formatına dönüştürüldükten sonra API Gateway servisine gönderilir. API Gateway tarafından tetiklenen ilk Lambda fonksiyonu, aldığı görüntüyü işler ve Replicate üzerindeki modellere uygun giriş formatına dönüştürür. Daha sonra bu görüntüyü Replicate servisine iletir. Replicate üzerindeki model, işlemi tamamladıktan sonra sonucu bir Webhook aracılığıyla ikinci Lambda fonksiyonunun tetikleyicisi olan API Gateway servisine iletir. İkinci Lambda fonksiyonu ise gelen sonucu alarak Amazon S3 bucket’ına kaydeder.
Aşağıdaki Python kodu, Lambda fonksiyonunun Replicate üzerindeki modellerle nasıl iletişim kurduğunu ve görüntü işleme sürecini göstermektedir.
import json
import base64
import replicate
import os
def lambda_handler(event, context):
# TODO implement
try:
os.environ["REPLICATE_API_TOKEN"] = "r************************"
print('lambda foksiyonu başlatıldı!!!!')
body = json.loads(event['body'])
base64_image = body["image"]
data_uri = f"data:image/jpeg;base64,{base64_image}"
print('Görüntü Alındı ve İşlendi!')
model = replicate.models.get("catacolabs/cartoonify")
version =
model.versions.get("f109015d60170dfb20460f17da8cb863155823c85ece1115e1e9e4ec7ef51d3
b")
print('Model Oluşturuldu!')
prediction = replicate.predictions.create(
version=version,
input={"img": data_uri},
webhook="https://**********.execute-api.eu-central1.amazonaws.com/replicate-app",
webhook_events_filter=["completed"])
# https://**********.execute-api.eu-central-1.amazonaws.com/replicate-app
=> sonuçları göndermek istediğimiz API Gateway'in url'i
print("Görüntü replicate'a gönderildi!!")
return {
'statusCode': 200,
'body': json.dumps('Görüntü başarı ile replicate'a gönderildi!')
}
except Exception as e:
print('hata!!!', e)
return {
'statusCode': 500,
'body': json.dumps('Hata: ' + str(e))
}
AWS Lambda İle Replicate Modelinin Sonucunu S3 Bucket’a Yazdırma
Replicate modelleri sonuçlarını ürettikten sonra, bu sonuçları ikinci “Lambda” servisinin tetikleyicisi olan “API Gateway” servisine iletilir. Ardından, “Lambda” servisi bu sonuçları “API Gateway” servisinden alır ve son aşama olan “S3” bucket’ına yazdırma işlemini gerçekleştirir. Lambda servisindeki python koduna aşağıdan erişebilirsiniz.
import json
import boto3
import requests
s3 = boto3.client('s3')
print('s3 bucket servisine baglandı')
def lambda_handler(event, context):
try:
body = json.loads(event['body'])
output = body["output"]
print('____output alindi_____')
res = requests.get(output)
print('____response alindi_____')
upload_image_to_s3(res.content, 'cagdastest1', 'webhook_6.png')
print('resim s3 bucketina yülendi')
return {
'statusCode': 200,
'body': json.dumps('Dosya okundu ve islendi!')
}
except Exception as e:
print('--------------------------------',e)
return {
'statusCode': 500,
'body': json.dumps('Hata: ' + str(e))
}
def upload_image_to_s3(image_bytes, bucket_name, object_key):
# Görüntüyü S3 kovasına yükleyin
s3_client = boto3.client('s3')
s3_client.put_object(Bucket=bucket_name, Key=object_key, Body=image_bytes)
Fiyatlandırma ve Yapılan Kar
Tek bir “Lambda” servisinin görüntüyü alıp “Replicate” modellerine göndermesi ve sonucu alıncaya kadar beklemesi, işlem süresini uzatarak maliyetleri önemli ölçüde artırmaktadır. Bu durum, Lambda servislerinin her işlem için ayrı ayrı ücretlendirilmesi sebebiyle dezavantajlıdır. Bu nedenle geliştirdiğimiz proje, maliyet açısından büyük bir avantaj sağlamaktadır.
Mevcut sistemimizi yalnızca tek bir Lambda servisinin kullanıldığı alternatif bir sistemle karşılaştırdığımızda, geliştirdiğimiz çözüm yaklaşık 45 kat daha uygun maliyetli olmaktadır. Projede kullanılan model, TencentArc/GFPGAN olup, NVIDIA T4 GPU, 16GB GPU RAM ve 8GB sistem RAM’i kullanmaktadır. Bu donanım konfigürasyonunun maliyeti saniyede 0.000225 ABD Doları’dır.
Örneğin, 1.000.000 kullanım için;
- Replicate modeli maliyeti: 225 ABD Doları
- AWS Lambda maliyeti: 0.73 ABD Doları
Notlar:
- Lambda servisinin milisaniye başına ücreti 0,0000000021 USD’dir.
- API Gateway servisi için ilk 300 milyon çağrı maliyeti 1,00 USD’dir.
- S3 servisine ilk 1000 veri kaydetme işleminin maliyeti 0,00043 USD’dir.
Bu bilgiler ışığında, geliştirdiğimiz çözümün yüksek verimlilik sağladığı ve alternatif çözümlere kıyasla maliyet açısından çok daha avantajlı olduğu açıkça görülmektedir.
Sonuç
Projemizin sonuna gelindiğinde, AWS Lambda ve “replicate” modellerinin entegrasyonunun gücünü net bir şekilde görmekteyiz. Dinamik ölçeklenebilirlik ve işlem süresine dayalı maliyetlendirme özellikleri, projemizi hem maliyet açısından hem de performans açısından optimize etmemizi sağladı.
Çağdaş Yılmaz cagdasyilmz9696@gmail.com
메타데이터
- post_id
- bf9d7ac6219f
- slug
- aws-servisleri-i̇le-replicate-üzerindeki-modelleri-kullanma-bf9d7ac6219f
- url
- https://medium.com/@cagdasyilmaz9696/aws-servisleri-i%CC%87le-replicate-%C3%BCzerindeki-modelleri-kullanma-bf9d7ac6219f
- canonical_url
- https://medium.com/@cagdasyilmaz9696/aws-servisleri-i%CC%87le-replicate-%C3%BCzerindeki-modelleri-kullanma-bf9d7ac6219f
- author_url
- https://medium.com/@cagdasyilmaz9696
- status
- ok
- fetched_at
- 2026-08-03 01:36:14