[AWS] Bedrock

Bedrock์€ AWS์—์„œ ์ œ๊ณตํ•˜๋Š” LLM ์ œ๊ณต ์„œ๋น„์Šค๋‹ค.
API ๊ธฐ๋ฐ˜์œผ๋กœ ์˜คํ”ˆ์†Œ์Šค LLM ์‹œ์Šคํ…œ๋“ค์„ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๋น„๊ตํ•œ๋‹ค๋ฉด GCP์˜ Vertex AI ๊ฐ™์€ ๊ฒŒ ๋น„์Šทํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

๋…์ž์ ์ธ ๋ชจ๋ธ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค์ผ ๋ฟ์ด๋ผ์„œ Bedrock๋งŒ์ด ๊ฐ€์ง„ ํŠน์ถœ๋‚œ ์žฅ์ ์ด๋ž„๊ฑด ๋”ฑํžˆ ์—†๋‹ค. ๋‹ค๋ฅธ AWS ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€์˜ ํ†ตํ•ฉ์ด ์‰ฝ๋‹ค๋Š”๊ฒŒ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ถ€๋ถ„์ด๋ผ๊ณ  ๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.


๋ชจ๋“  ๋ชจ๋ธ์ด ์žˆ๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ์ด๋ž˜์ €๋ž˜ ๋งŽ์€ ํŽธ์ด๋‹ค.
AWS ์ž์ฒด ๋ชจ๋ธ๋„ ์žˆ๊ณ , ๋Œ€ํ‘œ์ ์ธ ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ๋“ค๋„ ๊ฑฐ์˜ ๋‹ค ์žˆ๊ณ , ์ œํœด๊ด€๊ณ„์ธ ์•คํŠธ๋กœํ”ฝ ๋ชจ๋ธ๋“ค๋„ ์žˆ๋‹ค.

๋‚ด ๋ณด๊ธฐ์— Bedrock์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ™๋ณด๋‚˜ ๋ฌธ์„œํ™”๊ฐ€ ๋ถ€์‹คํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.




๋น„์šฉ

๊ณ ์ • ๋น„์šฉ์ด ํฌ๊ฒŒ ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ๋Š” ์•„๋‹ˆ๊ณ , ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค๋ผ์„œ API ํ˜ธ์ถœ๋‹น, ํ† ํฐ ๊ฐฏ์ˆ˜ ๋“ฑ์œผ๋กœ ๋น„์šฉ์ด ๋ถ€๊ณผ๋œ๋‹ค.

https://aws.amazon.com/bedrock/pricing/
์ž์„ธํ•œ ๊ฒƒ์€ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.


LLM ๋ชจ๋ธ์ด ์ด๊ฒƒ์ €๊ฒƒ ์ง€์›๋˜๋Š” ํŽธ์ธ๋ฐ, ๋ชจ๋ธ๋งˆ๋‹ค, ํ˜น์€ ๋ชจ๋ธ ๋ฒ„์ „๋งˆ๋‹ค ๊ณผ๊ธˆ ๋ฐฉ์‹์ด ์ „๋ถ€ ๋‹ค๋ฅด๋‹ค.
๋˜ ์–ด๋–ค๊ฑด ๋ฆฌ์ „๋งˆ๋‹ค ๋น„์šฉ์ด ๋‹ค๋ฅธ ๊ฒƒ๋„ ์žˆ๊ณ  ๊ฐ™์€ ๊ฒƒ๋„ ์žˆ๋‹ค.

AWS ์น˜๊ณค ๋น„์šฉ์— ๋ฐ”๊ฐ€์ง€๋ฅผ ์”Œ์šด ๋ถ€๋ถ„์€ ์ ๋‹ค.
์•คํŠธ๋กœํ”ฝ ์†Œ๋„ท 3.7 ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•ด๋ณด๋ฉด

์•คํŠธ๋กœํ”ฝ์€ ์ž…๋ ฅ์ด 100๋งŒ ํ† ํฐ๋‹น 3๋‹ฌ๋Ÿฌ๊ณ ,


AWS์—์„œ๋Š” 1000 ํ† ํฐ๋‹น 0.003๋‹ฌ๋Ÿฌ๋‹ค. ๊ณฑํ•˜๋ฉด ๋น„์šฉ์€ ๊ฑฐ์˜ ๋™๋“ฑํ•˜๋‹ค.




๋ชจ๋ธ ์‚ฌ์šฉ ์‹ ์ฒญ

๋ชจ๋ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ๋‹ค.

์‚ฌ์šฉํ•˜๋ ค๋ฉด ์“ฐ๊ณ  ์‹ถ์€ ๋ชจ๋ธ๋งŒ ๋จผ์ € ์‚ฌ์šฉ ์‹ ์ฒญ์„ ํ•˜๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์ „์ฒด ์‚ฌ์šฉ ์‹ ์ฒญ์„ ํ•ด์•ผ ํ•œ๋‹ค.


์•คํŠธ๋กœํ”ฝ์˜ ๊ฒฝ์šฐ์—๋Š” ์•คํŠธ๋กœํ”ฝ์— ๋ณด๋‚ผ ์ •๋ณด๋„ ์ข€ ์จ์ค˜์•ผ ํ•œ๋‹ค. ๊ท€์ฐฎ๋‹ค.




ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ

๊ทธ๋ƒฅ ์ฝ˜์†”์—์„œ ๋ฐ”๋กœ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์ฑ—๋ด‡์„ ์จ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.
(์„œ์šธ ๊ธฐ์ค€) ์ฝ˜์†”์—์„œ๋Š” ํ…์ŠคํŠธ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ์ด๋ฏธ์ง€๋‚˜ ์˜ค๋””์˜ค๋Š” API๋กœ๋งŒ ๋œ๋‹ค.

ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™ํ•ด์„œ


๋ชจ๋ธ ๊ณ ๋ฅด๊ณ 


์จ๋ณด๋ฉด ๋œ๋‹ค.
๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ๊ธฐ์—์„œ ํ•  ์ˆ˜ ์žˆ๋‹ค.




๋ฆฌ์ „ ์ฐจ๋ณ„

์„œ์šธ ๊ฐ™์€ ๊ฐ€๋‚œํ•œ ๋ฆฌ์ „์—๋Š” ๊ธฐ๋Šฅ์ด ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, Bedlock์€ ๋”์šฑ ๊ทธ๋ ‡๋‹ค.
ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๋‚˜, ๋ชจ๋ธ ์ง€์› ์ˆ˜์ค€์ด ํ˜„๊ฒฉํ•˜๊ฒŒ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค.

์ข€๋” ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฒ„์ง€๋‹ˆ์•„ ๊ฐ™์€ ์ค‘์‹ฌ ๋ฆฌ์ „์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๊ถŒ์žฅ๋œ๋‹ค.

์ง€์› ์ˆ˜์ค€์ด ์ข€ ๋งŽ์ด ์ฐจ์ด๋‚œ๋‹ค.
๋ฒ„์ง€๋‹ˆ์•„์˜ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฏธ์ง€ ๊ฐ™์€ ๊ฒƒ๋„ ์ฝ˜์†”์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  Amazon ์ž์ฒด ๋ชจ๋ธ๊ณผ ์•คํŠธ๋กœํ”ฝ ์™ธ์˜ ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ๋“ค์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์‚ฌ์‹ค์ƒ ๋ฒ„์ง€๋‹ˆ์•„์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ์„ ํƒ์ง€๊ฐ€ ๋งŽ์•„์ง„๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์ง์ ‘ ๋ชจ๋ธ์„ ๋นš์–ด ์“ฐ๊ฑฐ๋‚˜ ํŒŒ์ธํŠœ๋‹ํ•ด์„œ ์“ฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.




API

๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋Š” ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ํ•˜๋”๋ผ๋„, ๊ฒฐ๊ตญ์— ์‘์šฉํ•˜๋ ค๋ฉด AWS API๋ฅผ ํ†ตํ•ด์„œ ๋ถ™์ด๋Š” ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

๋‹ค๋ฅธ AWS SDK ๋‚ด API๋“ค๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

import { fileURLToPath } from "node:url";

import {
  BedrockClient,
  ListFoundationModelsCommand,
} from "@aws-sdk/client-bedrock";

const REGION = "us-east-1";
const client = new BedrockClient({ region: REGION });

export const main = async () => {
  const command = new ListFoundationModelsCommand({});

  const response = await client.send(command);
  const models = response.modelSummaries;

  console.log("Listing the available Bedrock foundation models:");

  for (const model of models) {
    console.log("=".repeat(42));
    console.log(` Model: ${model.modelId}`);
    console.log("-".repeat(42));
    console.log(` Name: ${model.modelName}`);
    console.log(` Provider: ${model.providerName}`);
    console.log(` Model ARN: ${model.modelArn}`);
    console.log(` Input modalities: ${model.inputModalities}`);
    console.log(` Output modalities: ${model.outputModalities}`);
    console.log(` Supported customizations: ${model.customizationsSupported}`);
    console.log(` Supported inference types: ${model.inferenceTypesSupported}`);
    console.log(` Lifecycle status: ${model.modelLifecycle.status}`);
    console.log(`${"=".repeat(42)}\n`);
  }

  const active = models.filter(
    (m) => m.modelLifecycle.status === "ACTIVE",
  ).length;
  const legacy = models.filter(
    (m) => m.modelLifecycle.status === "LEGACY",
  ).length;

  console.log(
    `There are ${active} active and ${legacy} legacy foundation models in ${REGION}.`,
  );

  return response;
};

// Invoke main function if this file was run directly.
if (process.argv[1] === fileURLToPath(import.meta.url)) {
  await main();
}

์ž์„ธํ•œ ๊ฒƒ์€ ๋ณ„๋„ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://docs.aws.amazon.com/ko_kr/code-library/latest/ug/bedrock_example_bedrock_Hello_section.html



์ฐธ์กฐ
https://aws.amazon.com/bedrock/pricing/
https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-console.html
https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html