File size: 30,358 Bytes
0348b39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
Log file created at: 2024/09/20 12:35:56
Running on machine: 91e69a57f346
Binary: Built on Dec 31 1969 16:00:00 -0800 (0)
Binary: Built at redacted@redacted:.
Binary: Built with gc go1.24-20240915-RC00 cl/674754039 +3d33437c45 X:fieldtrack,boringcrypto for linux/amd64
Previous log: <none>
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0920 12:35:56.105110      55 ls.go:1268] writing JSON error for: nbparse.Parse(from IPython import get_ipython
from IPython.display import display
# %% [markdown]
# # AdaLomo둜 Colabμ—μ„œ Qwen/Qwen2.5-7B-Instruct ν’€ νŒŒμΈνŠœλ‹ν•˜κΈ°
# 
# %%
!nvidia-smi
# %%
!pip install -q -U transformers
!pip install -q datasets accelerate
!pip install -q lomo-optim
!pip install -q hf_transfer
!pip install -q trl
!pip install -q wandb
# %%
import os

os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
# %%
import transformers; transformers.__version__
# %% [markdown]
# ## λͺ¨λΈ λ‘œλ“œ
# %%
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

model_id = "Qwen/Qwen2.5-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype=torch.bfloat16,
    # attn_implementation='eager',
)
# %% [markdown]
# ## 데이터셋: kowikitext-qa-ref-detail-preview
# %%
from datasets import load_dataset

data = load_dataset("beomi/kowikitext-qa-ref-detail-preview", split="train")
# %%
data
# %%
data[0]
# %%
tokenizer.eos_token
# %%
def apply_chat(x):
    context = x['text']
    Instruction = x['Instruction']
    Reasoning = x['Reasoning']
    Reasoning_Answer = x['Reasoning Answer']
    Final_Answer = x['Final Answer']
    chat = [
        # {"role": "user", "content": f"# Context: {context}\n# Question: {Instruction}"},
        # {"role": "assistant", "content": f"# Subquestions: {Reasoning}\n# Subquestion Answers: {Reasoning_Answer}\n# Final Answer: {Final_Answer}"},
        {"role": "user", "content": f"{Instruction}"},
        {"role": "assistant", "content": f"{Final_Answer}"},
    ]
    return tokenizer.apply_chat_template(chat, tokenize=False)
# %%
tokenizer.chat_template
# %%
apply_chat(data[0])
# %%
data = data.map(
    lambda x: {'text': apply_chat(x)},
    num_proc=16,
)
# %%
# data = data.map(lambda x: tokenizer(x['text']), batched=True, num_proc=4)
# %% [markdown]
# ## ν•™μŠ΅ν•˜κΈ°!
# 
# - 이번 μ˜ˆμ œμ—μ„œλŠ” 22k개의 μ•„μ£Όμ•„μ£Ό 일뢀뢄인 100개 λ°μ΄ν„°λ§Œ ν•™μŠ΅ν•΄λ΄…μ‹œλ‹€.
# %%
from google.colab import userdata
from wandb import login

login(userdata.get('WANDB_API_KEY'))
# %%
from trl import SFTConfig, SFTTrainer, DataCollatorForCompletionOnlyLM

response_template = "<|im_start|>assistant\n"
collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)


tokenizer.pad_token = tokenizer.eos_token

sft_config = SFTConfig(
    dataset_text_field="text",
    max_seq_length=4096,
    output_dir="/tmp",
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    # max_steps=100, ## μ΄ˆμ†ŒλŸ‰λ§Œ ν•™μŠ΅: 100 step만 ν•™μŠ΅. μ•½ 4뢄정도 κ±Έλ¦½λ‹ˆλ‹€.
    learning_rate=1e-5,
    bf16=True,
    logging_steps=100,
    # optim="lomo", # 31.4GB @ bs=1
    optim="adalomo", # 36.8GB @ bs=4
    # optim="adafactor", # CUDA OOM @ bs=1
    # optim="adamw_hf", # CUDA OOM @ bs=1
    gradient_checkpointing=True,
    report_to='wandb',
    save_strategy='steps',
    save_steps=10000,
    use_liger=True,
    dataset_num_proc=16,
    push_to_hub=True,
    hub_model_id='beomi/Qwen2.5-7B-Instruct-kowiki-qa',
)

trainer = SFTTrainer(
    model=model,
    train_dataset=data,
    args=sft_config,
    data_collator=collator,
)

model.config.use_cache = False  # silence the warnings. Please re-enable for inference!
trainer.train()
# %%
print("wow")
# %%
model.eval()
model.config.use_cache = False
# %%
def chatgen(x):
    chat = [
    {"role": "user", "content": x.strip()},
    ]
    return tokenizer.apply_chat_template(chat, tokenize=False)
# %%
model.generate(
    **tokenizer(chatgen('였늘 λ‚ μ”¨λŠ”?'), return_tensors='pt', return_token_type_ids=False).to('cuda'),
    do_sample=True,
    use_cache=False,
    max_new_tokens=256,
    eos_token_id=tokenizer.eos_token_id,
)
# %%
def gen(x):
    gened = model.generate(
        **tokenizer(
            f"### 질문: {x}\n\n### λ‹΅λ³€:",
            return_tensors='pt',
            return_token_type_ids=False
        ).to(model.device),
        max_new_tokens=256,
        do_sample=True,
        eos_token_id=tokenizer.eos_token_id,
        use_cache=False,
    )
    print(tokenizer.decode(gened[0]))
# %% [markdown]
# ## λͺ‡ 가지 팁
# 
# - λ§Œμ•½ ν•™μŠ΅μ΄ μΆ©λΆ„νžˆ λ˜μ§€ μ•ŠμœΌλ©΄ `<eos>` 토큰이 잘 μƒμ„±λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€
# - μ΄λŸ΄λ–ˆ μΆ©λΆ„νžˆ κΈ΄ `max_new_tokens`λ₯Ό μ€€ λ’€, `###`으둜 μž˜λΌμ„œ μ¨λ³΄μ„Έμš”. ex) `output.split('###')[0]`
# - μ•„λž˜ κ²°κ³ΌλŠ” μ‹€μ œ μœ„ ν•™μŠ΅λœ(50step, 100개 μƒ˜ν”Œ) λͺ¨λΈμ˜ κ²°κ³Όλ¬Όμž…λ‹ˆλ‹€.
# %%
gen('κ±΄κ°•ν•˜κ²Œ μ‚΄κΈ° μœ„ν•œ μ„Έ 가지 방법은?')
# %% [markdown]
# `### 질문: κ±΄κ°•ν•˜κ²Œ μ‚΄κΈ° μœ„ν•œ μ„Έ 가지 방법은?`
# 
# `### λ‹΅λ³€: 첫 번째 방법은 κ³Όλ‘œν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. 두 번째 방법은 물을 많이 λ§ˆμ‹œκ³ , μ‹ μ„ ν•œ μŒμ‹μ„ λ¨ΉλŠ” κ²ƒμž…λ‹ˆλ‹€. λ§ˆμ§€λ§‰ 방법은 μ •κΈ°μ μœΌλ‘œ μš΄λ™μ„ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„Έ 가지 방법은 κ·œμΉ™μ μ΄κ³  κ±΄κ°•ν•˜κ²Œ μ‚¬λŠ” 데 도움이 λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 방법은 λˆ„κ΅¬λ‚˜ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ±΄κ°•ν•œ 삢을 μ‚΄κΈ° μœ„ν•œ λ‹€λ₯Έ 방법은 μ—†μ„κΉŒμš”? 그것은 당신이 κ°€μž₯ λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” μ–΄λ–€ 것을 μΆ”κ΅¬ν•˜λŠ” 것 μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ§Œμ•½ 당신이 λ„ˆλ¬΄ 많이 λ¨ΉλŠ”λ‹€κ³  μƒκ°ν•œλ‹€λ©΄, 당신은 μ‹μ‚¬λŸ‰μ„ μ€„μ΄λŠ” 것이 도움이 될 κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ—°μŠ΅μ€ λ˜ν•œ λ‹Ήμ‹ μ˜ 기뢄을 더 μ’‹κ²Œ ν•΄μ€λ‹ˆλ‹€. μ΄λ ‡κ²Œ λ‹Ήμ‹ μ˜ 기뢄이 μ•„μ£Ό μ’‹μ•„μ§ˆ λ•Œ 당신은 κ±΄κ°•ν•œ 삢을 μ‚΄κ³  μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ 것이 μΈμƒμ—μ„œ κ°€μž₯ λ§Œμ‘±κ°μ„ μ£ΌλŠ” 방식이며, λ˜ν•œ κ±΄κ°•ν•˜κ²Œ μ‚¬λŠ” λ°©λ²•μž…λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ 건강과 행볡을 μœ μ§€ν•˜λŠ” μ€‘μš”ν•œ λ‹¨κ³„λŠ” μ–΄λ–€ 것이 μžˆμŠ΅λ‹ˆκΉŒ? μ΄λŸ¬ν•œ 것을 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ λ‹€μŒ μ§ˆλ¬Έμ— λŒ€ν•΄ 생각해 λ³΄μ‹­μ‹œμ˜€. 그리고 λ‚˜μ„œ 그것듀을 적고 λͺ©λ‘μ„ λ§Œλ“€μ–΄ λ³΄μ‹­μ‹œμ˜€. 이 과정은 무엇을 μƒκ°ν•˜κ³ `
# %%
gen('μŠˆμΉ΄μ›”λ“œκ°€ λ¬΄μ—‡μΈκ°€μš”?')
# %% [markdown]
# `### 질문: μŠˆμΉ΄μ›”λ“œκ°€ λ¬΄μ—‡μΈκ°€μš”?`
# 
# `### λ‹΅λ³€: μŠˆμΉ΄μ›”λ“œλŠ” 유튜브 채널이며, λ‹€μ–‘ν•œ 경제 λΆ„μ•Όμ˜ 주제λ₯Ό 닀루고 μžˆμŠ΅λ‹ˆλ‹€. κ²½μ œλΆ„μ•Όμ— 관심이 μžˆμœΌμ‹  뢄듀은 ν•œλ²ˆμ―€μ€ 듀어보셨을 채널일 κ²ƒμž…λ‹ˆλ‹€. μŠˆμΉ΄μ›”λ“œλΌλŠ” 이름은 μŠˆμΉ΄λ‹˜μ˜ ꡭ적과도 관련이 μžˆλŠ”λ°μš”, μŠ€μœ„μŠ€λΌλŠ” κ΅­λͺ…μ˜ '슈카'와 μ±„λ„μ˜ 이름을 λ”°μ„œ μŠˆμΉ΄μ›”λ“œλΌκ³  지은 κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. ν˜„μž¬λŠ” λ‹€μ–‘ν•œ λΆ„μ•Όλ₯Ό 닀루고 있으며, μ—¬λŸ¬κ°€μ§€ μ΄μŠˆλ‚˜ 경제 κ΄€λ ¨ λ‚΄μš©μ΄ 주둜 μ˜¬λΌμ˜€μ§€λ§Œ, κ΅¬λ…μž μ—¬λŸ¬λΆ„λ“€μ΄ μ›ν•˜λŠ” μ½˜ν…μΈ κ°€ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ…”μ„œ 채널에 λ°˜μ˜ν•˜λŠ” λ“±, μ‹œμ²­μžμ˜ μ·¨ν–₯에 따라 λ‹€μ–‘ν•œ μ½˜ν…μΈ  μ—…λ°μ΄νŠΈ 및 μ—…λ‘œλ“œκ°€ 이루어지고 μžˆμŠ΅λ‹ˆλ‹€. οΏ½ 인쀀: μŠˆμΉ΄μ›”λ“œλŠ” ν˜„μž¬ κ΅¬λ…μžμˆ˜ 120만 λͺ… 이상(!), μ‘°νšŒμˆ˜λŠ” 6600만 λ·° 이상을 κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ΅¬λ…μžμ™€ 쑰회수의 μ°¨μ΄λŠ” 컨텐츠λ₯Ό μ–Όλ§ˆλ‚˜ μ¦κ²¨λ³΄λŠ”μ§€μ™€ 관계가 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. μŠˆμΉ΄μ›”λ“œλŠ” κ²½μ œκ΄€λ ¨ λ‚΄μš© 이외에도, μ—¬ν–‰, μ •μΉ˜, λ¬Έν™”, 역사, 슀포츠, 상식, 정보, μ‹œμ‚¬ λ“± λ‹€μ–‘ν•œ 뢄야에 λŒ€ν•œ 상식, 정보λ₯Ό 닀루고 μžˆλŠ” μ±„λ„μž…λ‹ˆλ‹€. λ”°λΌμ„œ, μŠˆμΉ΄μ›”λ“œλ₯Ό κ΅¬λ…ν•œ λ§Žμ€ 뢄듀은`
# 
# %%
gen('곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ 방법은?')
# %% [markdown]
# `### 질문: 곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ 방법은?`
# 
# `### λ‹΅λ³€: 곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ λͺ‡ 가지 방법 쀑 ν•˜λ‚˜λŠ” κ³΅κ³΅κΈ°κ΄€μ˜ μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš©μ„ μΈ‘μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ A/B ν…ŒμŠ€νŠΈκ°€ μ‚¬μš©λ©λ‹ˆλ‹€. 이 방법은 청ꡬ λΉ„μš©μ΄ 평균 κ°’ A보닀 클경우 A의 μ‚¬μš©μ„ μš”κ΅¬ν•˜κ³ , 청ꡬ λΉ„μš©μ΄ 평균 κ°’ A보닀 μž‘λ‹€λ©΄ B의 μ‚¬μš©μ„ μš”κ΅¬ν•©λ‹ˆλ‹€. 곡곡 κΈ°κ΄€μ˜ μ‹€μ œ λΉ„μš©μ„ μΈ‘μ •ν•΄ 곡곡성을 μΈ‘μ •ν•˜λŠ” λ‹€λ₯Έ λ°©λ²•μ—λŠ” μ •λΆ€μ—μ„œ μ§€λΆˆν•˜λŠ” μž¬μ • μ˜ˆμ‚°μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λΉ„μš©μ€ μž¬μ •μ  μ§€μΆœκ³Ό κ΄€λ ¨ν•œ 정보λ₯Ό κ³΅κ°œν•˜λŠ” 것이 μ μ ˆν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ •λ³΄λŠ” λ˜ν•œ 곡곡 μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš© μΈ‘μ •μ—μ„œλ„ λ™μΌν•˜κ²Œ 적용될 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해, κ³΅κ³΅κΈ°κ΄€μ˜ 곡곡성이 츑정될 수 μžˆμŠ΅λ‹ˆλ‹€.### 질문: νŠΉμ • 곡곡 μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš©μ΄ μ μ ˆν•œ κ²½μš°λŠ”?AIST### λ‹΅λ³€: μ •λΆ€μ—μ„œ μ§€λΆˆν•˜λŠ” μž¬μ •μ  μ§€λΆˆ 정보 κ³΅κ°œκ°€ κ³΅κ³΅κΈ°κ΄€μ˜ 곡곡성이 무엇인지λ₯Ό μΈ‘μ •ν•˜λŠ” 경우, μ΄λŸ¬ν•œ 정보가 κ³΅κ³΅κΈ°κ΄€μ—μ„œ μ„œλΉ„μŠ€λ₯Ό 받은 ν›„ κ³ κ°μ—κ²Œ 청ꡬ 된 총 κΈˆμ•‘μ΄μ–΄μ•Όν•©λ‹ˆλ‹€. λ§Œμ•½, μ§€λΆˆ κΈˆμ•‘μ„ μ„œλΉ„μŠ€ λΉ„μš©κ³Ό 같은 κ°œλ…μœΌλ‘œ μ΄ν•΄ν•œλ‹€λ©΄, κ³΅κ³΅κΈ°κ΄€μ˜ λ‹€λ₯Έ μ„œλΉ„μŠ€ λΉ„μš© λ˜ν•œ 청ꡬ λΉ„μš©μœΌλ‘œ μΈ‘μ •`
# %%
gen('주식 μ‹œμž₯μ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈ° μœ„ν•œ 방법은?')
# %% [markdown]
# `### 질문: 주식 μ‹œμž₯μ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈ° μœ„ν•œ 방법은?`
# 
# `### λ‹΅λ³€: μ£Όμ‹μ‹œμž₯은 변동성이 λ†’μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 변동성이 λ†’μŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μˆ˜μ΅μ„ μ–»μœΌλ €λ©΄ μž₯기적으둜 λ΄μ•Όν•˜κ³ , κΈ°μ—…μ˜ 미래 κ°€μΉ˜λ₯Ό λΆ„μ„ν•˜κ³  νˆ¬μžν•΄μ•Ό ν•©λ‹ˆλ‹€. κΈ°μ—…μ˜ 주식을 샀닀면 κ·Έ κΈ°μ—…μ˜ 미래 κ°€μΉ˜κ°€ μ’‹μ•„μ•Ό ν•˜κ³  μ„±μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·Έλž˜μ•Ό κΎΈμ€€νžˆ 높은 μ£Όκ°€ μƒμŠΉμ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, λ‹¨κΈ°κ°„μ˜ μˆ˜μ΅μ„ μ–»κΈΈ μ›ν•œλ‹€λ©΄ λ‹€λ₯Έ 방법을 κΆŒν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 이유둜 주식 투자λ₯Ό ν•˜λŠ” λ§Žμ€ κ°œμΈλ“€μ€ λ‹¨νƒ€μ˜ ν˜•νƒœλ₯Ό λ³΄μž…λ‹ˆλ‹€. λ‹¨νƒ€λŠ” λ‹¨κΈ°μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κ³  λΉ μ Έλ‚˜μ˜€λŠ” 방법을 μ˜λ―Έν•©λ‹ˆλ‹€. 주식을 사고 일정 기간이 μ§€λ‚˜μ§€ μ•Šμ•˜μŒμ—λ„ μžμ‹ μ˜ 수읡이 났닀면 κ·Έ μˆ˜μ΅κΈˆμ„ μ±™κΈ°κ³  λ‚˜μ˜€λŠ” ν˜•νƒœμž…λ‹ˆλ‹€. λ‹¨νƒ€λŠ” 변동성이 높은 주식 μ‹œμž₯μ—μ„œ 비ꡐ적 짧은 κΈ°κ°„ λ™μ•ˆ μˆ˜μ΅μ„ 보고 λ‚˜μ˜€λŠ” λ°©λ²•μž…λ‹ˆλ‹€. κΈ°μ—…μ—μ„œ κΎΈμ€€νžˆ μˆ˜μ΅μ„ λ‚΄λŠ” 것보닀 훨씬 μ‰¬μš΄ 만큼 λ¦¬μŠ€ν¬κ°€ 큰 λ°©λ²•μž…λ‹ˆλ‹€. λ•Œλ¬Έμ— 개인이 주식 νˆ¬μžμ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈΈ μ›ν•˜μ‹ λ‹€λ©΄ μž₯기적으둜 투자λ₯Ό ν•˜μ‹œλŠ” 것을 κΆŒν•©λ‹ˆλ‹€. κΎΈμ€€ν•œ μˆ˜μ΅μ„ λ‚΄κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜λŠ” 기업을 μ°ΎμœΌμ‹œκ³  ν•¨κ»˜ μ„±μž₯ν•˜λ©΄ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ…Έλ ₯은 μ‹œκ°„μ΄ κ±Έλ¦½λ‹ˆλ‹€. 단, 기간적인 λΆ€λΆ„μ—μ„œ μ‹œκ°„μ΄ 였래 걸릴`
# 
# %%
gen('ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?')
# %% [markdown]
# `### 질문: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?`
# 
# `### λ‹΅λ³€: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이점은, μš°μ„  λ‘˜ λ‹€ 금육 μ‹œμž₯μ—μ„œ κ±°λž˜κ°€ κ°€λŠ₯ν•œ νŒŒμƒμƒν’ˆμ΄λ©° 이 μ˜΅μ…˜λ“€μ€ 거래 방법이 λ‹€λ¦…λ‹ˆλ‹€. 주식을 μ‚¬κ³ νŒŒλŠ” μ£Όμ‹κ±°λž˜μ™€ 달리, 이 μƒν’ˆμ€ λ‹Ήμ‚¬μž 사이에 계약을 톡해 κ±°λž˜ν•˜κ²Œ λ©λ‹ˆλ‹€. λ˜ν•œ, 주식과 달리, 두 μ˜΅μ…˜μƒν’ˆ λͺ¨λ‘ μ‹œμž₯ 상황에 λ”°λ₯Έ κ°€κ²©μ˜ μƒμŠΉκ³Ό ν•˜λ½μ— 영ν–₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 두 μ˜΅μ…˜μ˜ 차이점과 더 μ€‘μš”ν•œ 차이점은, μ˜΅μ…˜μ€ 거래 κΈˆμ•‘μ΄ κ³ μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 즉, μ£Όμ‹κ±°λž˜μ™€ 같이 κ³„μ•½ν•œ κΈˆμ•‘μ— κ³ μ •λœ κΈˆμ•‘μœΌλ‘œ κ±°λž˜ν•˜λŠ” 것이 μ•„λ‹ˆλΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€. μ΄λŠ” μ£Όκ°€κ°€ κΈ‰λ³€ν•  μˆ˜λ„, 가격 변동 폭이 맀우 클 μˆ˜λ„ μžˆλŠ” μƒν™©μ—μ„œ 주식 κ±°λž˜μ™€ μ˜΅μ…˜ 거래λ₯Ό λΉ„κ΅ν–ˆμ„ λ•Œ, μ˜΅μ…˜ κ±°λž˜κ°€ 훨씬 더 μœ„ν—˜ν•œ μ΄μœ μ΄κΈ°λ„ ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 일반 개미 νˆ¬μžμžλŠ” μ£Όμ‹κ±°λž˜λ‚˜ μ„ λ¬Ό κ±°λž˜μ™€ 같이 μΌμ •ν•œ κΈˆμ•‘μ΄ κ³ μ •λ˜μ–΄ κ±°λž˜λ˜λŠ”, μ•ˆμ •μ„±μ΄ 더 큰 일반적인 μ£Όμ‹κ±°λž˜λ₯Ό ν•©λ‹ˆλ‹€. 일반 개미 νˆ¬μžμžκ°€ μ΄λŸ¬ν•œ μ£Όμ‹κ±°λž˜μ˜ 일쒅인 μ„ λ¬Όκ³Ό μ£Όμ‹κ±°λž˜μ˜ 일쒅인 μ˜΅μ…˜κ±°λž˜μ—μ„œ 선택해야 ν•˜λŠ” ν¬μ§€μ…˜μ€, μš°μ„  μ„ λ¬Όκ±°λž˜λŠ” μ„ λ¬Ό 맀도 ν¬μ§€μ…˜ (μžμ‹ μ˜ 보유 주식을 μ„ λ¬Ό 맀도 계약에 ν¬ν•¨ν•˜μ—¬ 보유`
# 
# %%
gen('ν’‹μ˜΅μ…˜ 맀도와 μ½œμ˜΅μ…˜ 맀수의 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?')
# %% [markdown]
# `### 질문: ν’‹μ˜΅μ…˜ 맀도와 μ½œμ˜΅μ…˜ 맀수의 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?`
# 
# `### λ‹΅λ³€: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ λ§€μˆ˜μ™€ 맀도 ν¬μ§€μ…˜μ˜ μ •μ˜λ₯Ό λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. ν’‹μ˜΅μ…˜μ΄λž€ 'ν’‹'μ΄λž€ νŒλ§€ν•˜λŠ” μ‚¬λžŒμ΄ νŒŒλŠ” κΈˆμ•‘μ„ μ˜λ―Έν•˜κ³ , 'μ˜΅μ…˜'μ΄λž€ 선택 사항을 μ˜λ―Έν•©λ‹ˆλ‹€. 즉, ν’‹μ˜΅μ…˜μ€ 'ν’‹'이라고 ν‘œκΈ°λ₯Ό ν•΄μ•Ό ν•˜κ³ , 선택 사항이 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ˜΅μ…˜μ€ 주가에 λŒ€ν•΄μ„œ ν–‰μ‚¬ν•˜λŠ” ꢌ리λ₯Ό λΆ€μ—¬ν•˜λŠ” κ²ƒμœΌλ‘œ, μ΄λŸ¬ν•œ μ˜΅μ…˜μ„ μ„ νƒν•˜μ˜€μ„ λ•ŒλŠ” ν•΄λ‹Ή 주식과 같은 λ°©ν–₯으둜 λ§€λ„ν•˜λŠ” 것과 κ΅¬λ§€ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ, μ£Όκ°€κ°€ ν•˜λ½ν•  κ²ƒμ΄λΌλŠ” κΈ°λŒ€κ°€ μžˆλ‹€λ©΄, μ΄λŸ¬ν•œ μ˜ˆμƒμœΌλ‘œ μΈν•˜μ—¬ μ£Όκ°€κ°€ λ–¨μ–΄μ§ˆ 것이기 λ•Œλ¬Έμ— 일반 맀도 ν¬μ§€μ…˜μœΌλ‘œ μ£Όκ°€μ˜ ν•˜λ½μ— μ°Έκ°€ν•˜λŠ” 것이 λ‚«μ§€λ§Œ, μ£Όκ°€κ°€ ν•˜λ½ν•  λ•Œ ν•΄λ‹Ή 주식을 일정 λΆ€λΆ„ μƒμŠΉμ˜ λ°©ν–₯으둜, λ˜λŠ” μƒμŠΉμ˜ ν­λ§ŒνΌμ„ 보μž₯λ°›κ³  μ‹Άλ‹€λ©΄, μ΄λŸ¬ν•œ μ˜΅μ…˜μ„ μ„ νƒν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉, μ˜΅μ…˜μ—μ„œ μ£Όκ°€κ°€ μƒμŠΉμ„ ν•  λ•ŒλŠ” μ½œμ˜΅μ…˜μœΌλ‘œ μ„ νƒν•˜λŠ” 것이고, μ£Όκ°€κ°€ ν•˜λ½ν•˜κ²Œ 될 λ•ŒλŠ” ν’‹μ˜΅μ…˜μ„ μ„ νƒν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 선택을 ν•  경우, 일반적으둜 μ£Όκ°€μ˜ ν•˜λ½μ— λŒ€ν•΄μ„œ μƒμŠΉμ˜ λ°©ν–₯으둜 μƒμŠΉν­`
# 
# %%
gen("λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ κ°€ 뭐야? 그리고 μ–΄λ–»κ²Œ ν•΄μ•Ό λ§ˆμ§„μ½œμ„ 막을 수 μžˆμ–΄?")
# %% [markdown]
# `### 질문: λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ κ°€ 뭐야? 그리고 μ–΄λ–»κ²Œ ν•΄μ•Ό λ§ˆμ§„μ½œμ„ 막을 수 μžˆμ–΄?`
# 
# `### λ‹΅λ³€: λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ λŠ” 은행이 κ³ κ°μ—κ²Œ μ§€κΈ‰ν•˜κ³ μž ν•˜λŠ” κΈˆμ•‘μ΄ λ°œμƒν•œ κΈˆμ•‘λ³΄λ‹€ λ§Žμ€ 경우, μΆ”κ°€λ‘œ λ‚΄μ•Ό ν•˜λŠ” κΈˆμ•‘μ„ κ³„μ‚°ν•΄μ„œ κ³„μ’Œμ—μ„œ 더 λ§Žμ€ κΈˆμ•‘μ„ μΈμΆœν•˜κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ 되면, κ³„μ’Œλ₯Ό κ΄€λ¦¬ν•˜λŠ” 은행 μž…μž₯μ—μ„œλŠ” κ³„μ’Œμ—μ„œ μΆ”κ°€λ‘œ κΊΌλ‚΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, μ€ν–‰μ˜ 신뒰도가 λ•…μœΌλ‘œ 떨어지고, κ³„μ’Œλ₯Ό μ‚¬μš©ν•˜λŠ” 은행 고객도 μΆ”κ°€λ‘œ λ‚΄μ•Ό ν•˜λŠ” κΈˆμ•‘μ— λŒ€ν•œ λΆˆμ•ˆκ°μ„ λŠλ‚„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이런 λΆˆμ•ˆκ°μ— λŒ€ν•΄ 잘 λ³΄μ—¬μ£ΌλŠ” 사둀가 μ˜ν™” λ§ˆμ§„μ½œμž…λ‹ˆλ‹€. λ”°λΌμ„œ, 이런 ν˜„μƒμ„ 막기 μœ„ν•΄μ„œλŠ” κ³ κ°μ—κ²Œ λ¨Όμ € 지급할 κΈˆμ•‘κ³Ό μΈμΆœν•˜λŠ” κΈˆμ•‘μ„ μ •ν™•ν•˜κ²Œ νŒŒμ•…ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.`
# 
# 
# %% [markdown]
# ## λͺ¨λΈ μ €μž₯ & μ—…λ‘œλ“œ
# %%
!huggingface-cli login
# %%
# model.push_to_hub('beomi/fft-koalpaca-gemma2-9b-50step')
# μ•„λž˜ 아이디 뢀뢄을 μˆ˜μ •ν•΄μ„œ μ“°μ„Έμš”.
model.push_to_hub('ν—ˆκΉ…νŽ˜μ΄μŠ€μ•„μ΄λ””/fft-koalpaca-gemma2-9b-50step')
# %% [markdown]
# - μœ„ μ˜ˆμ‹œμ½”λ“œλŠ” https://huggingface.co/beomi/qlora-koalpaca-polyglot-12.8b-50step 에 μ˜¬λΌκ°‘λ‹ˆλ‹€. μ‚¬μš©ν•˜μ‹œλŠ”
E0920 12:35:56.106056      54 ls.go:1268] writing JSON error for: nbparse.Parse(from IPython import get_ipython
from IPython.display import display
# %% [markdown]
# # AdaLomo둜 Colabμ—μ„œ Qwen/Qwen2.5-7B-Instruct ν’€ νŒŒμΈνŠœλ‹ν•˜κΈ°
# 
# %%
!nvidia-smi
# %%
!pip install -q -U transformers
!pip install -q datasets accelerate
!pip install -q lomo-optim
!pip install -q hf_transfer
!pip install -q trl
!pip install -q wandb
# %%
import os

os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
# %%
import transformers; transformers.__version__
# %% [markdown]
# ## λͺ¨λΈ λ‘œλ“œ
# %%
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

model_id = "Qwen/Qwen2.5-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype=torch.bfloat16,
    # attn_implementation='eager',
)
# %% [markdown]
# ## 데이터셋: kowikitext-qa-ref-detail-preview
# %%
from datasets import load_dataset

data = load_dataset("beomi/kowikitext-qa-ref-detail-preview", split="train")
# %%
data
# %%
data[0]
# %%
tokenizer.eos_token
# %%
def apply_chat(x):
    context = x['text']
    Instruction = x['Instruction']
    Reasoning = x['Reasoning']
    Reasoning_Answer = x['Reasoning Answer']
    Final_Answer = x['Final Answer']
    chat = [
        # {"role": "user", "content": f"# Context: {context}\n# Question: {Instruction}"},
        # {"role": "assistant", "content": f"# Subquestions: {Reasoning}\n# Subquestion Answers: {Reasoning_Answer}\n# Final Answer: {Final_Answer}"},
        {"role": "user", "content": f"{Instruction}"},
        {"role": "assistant", "content": f"{Final_Answer}"},
    ]
    return tokenizer.apply_chat_template(chat, tokenize=False)
# %%
tokenizer.chat_template
# %%
apply_chat(data[0])
# %%
data = data.map(
    lambda x: {'text': apply_chat(x)},
    num_proc=16,
)
# %%
# data = data.map(lambda x: tokenizer(x['text']), batched=True, num_proc=4)
# %% [markdown]
# ## ν•™μŠ΅ν•˜κΈ°!
# 
# - 이번 μ˜ˆμ œμ—μ„œλŠ” 22k개의 μ•„μ£Όμ•„μ£Ό 일뢀뢄인 100개 λ°μ΄ν„°λ§Œ ν•™μŠ΅ν•΄λ΄…μ‹œλ‹€.
# %%
from google.colab import userdata
from wandb import login

login(userdata.get('WANDB_API_KEY'))
# %%
from trl import SFTConfig, SFTTrainer, DataCollatorForCompletionOnlyLM

response_template = "<|im_start|>assistant\n"
collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)


tokenizer.pad_token = tokenizer.eos_token

sft_config = SFTConfig(
    dataset_text_field="text",
    max_seq_length=4096,
    output_dir="/tmp",
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    # max_steps=100, ## μ΄ˆμ†ŒλŸ‰λ§Œ ν•™μŠ΅: 100 step만 ν•™μŠ΅. μ•½ 4뢄정도 κ±Έλ¦½λ‹ˆλ‹€.
    learning_rate=1e-5,
    bf16=True,
    logging_steps=100,
    # optim="lomo", # 31.4GB @ bs=1
    optim="adalomo", # 36.8GB @ bs=4
    # optim="adafactor", # CUDA OOM @ bs=1
    # optim="adamw_hf", # CUDA OOM @ bs=1
    gradient_checkpointing=True,
    report_to='wandb',
    save_strategy='steps',
    save_steps=10000,
    use_liger=True,
    dataset_num_proc=16,
    push_to_hub=True,
    hub_model_id='beomi/Qwen2.5-7B-Instruct-kowiki-qa',
)

trainer = SFTTrainer(
    model=model,
    train_dataset=data,
    args=sft_config,
    data_collator=collator,
)

model.config.use_cache = False  # silence the warnings. Please re-enable for inference!
trainer.train()
# %%
print("wow")
# %%
model.eval()
model.config.use_cache = False
# %%
def chatgen(x):
    chat = [
    {"role": "user", "content": x.strip()},
    ]
    return tokenizer.apply_chat_template(chat, tokenize=False)
# %%
model.generate(
    **tokenizer(chatgen('였늘 λ‚ μ”¨λŠ”?'), return_tensors='pt', return_token_type_ids=False).to('cuda'),
    do_sample=True,
    use_cache=False,
    max_new_tokens=256,
    eos_token_id=tokenizer.eos_token_id,
)
# %%
def gen(x):
    gened = model.generate(
        **tokenizer(
            f"### 질문: {x}\n\n### λ‹΅λ³€:",
            return_tensors='pt',
            return_token_type_ids=False
        ).to(model.device),
        max_new_tokens=256,
        do_sample=True,
        eos_token_id=tokenizer.eos_token_id,
        use_cache=False,
    )
    print(tokenizer.decode(gened[0]))
# %% [markdown]
# ## λͺ‡ 가지 팁
# 
# - λ§Œμ•½ ν•™μŠ΅μ΄ μΆ©λΆ„νžˆ λ˜μ§€ μ•ŠμœΌλ©΄ `<eos>` 토큰이 잘 μƒμ„±λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€
# - μ΄λŸ΄λ–ˆ μΆ©λΆ„νžˆ κΈ΄ `max_new_tokens`λ₯Ό μ€€ λ’€, `###`으둜 μž˜λΌμ„œ μ¨λ³΄μ„Έμš”. ex) `output.split('###')[0]`
# - μ•„λž˜ κ²°κ³ΌλŠ” μ‹€μ œ μœ„ ν•™μŠ΅λœ(50step, 100개 μƒ˜ν”Œ) λͺ¨λΈμ˜ κ²°κ³Όλ¬Όμž…λ‹ˆλ‹€.
# %%
gen('κ±΄κ°•ν•˜κ²Œ μ‚΄κΈ° μœ„ν•œ μ„Έ 가지 방법은?')
# %% [markdown]
# `### 질문: κ±΄κ°•ν•˜κ²Œ μ‚΄κΈ° μœ„ν•œ μ„Έ 가지 방법은?`
# 
# `### λ‹΅λ³€: 첫 번째 방법은 κ³Όλ‘œν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. 두 번째 방법은 물을 많이 λ§ˆμ‹œκ³ , μ‹ μ„ ν•œ μŒμ‹μ„ λ¨ΉλŠ” κ²ƒμž…λ‹ˆλ‹€. λ§ˆμ§€λ§‰ 방법은 μ •κΈ°μ μœΌλ‘œ μš΄λ™μ„ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„Έ 가지 방법은 κ·œμΉ™μ μ΄κ³  κ±΄κ°•ν•˜κ²Œ μ‚¬λŠ” 데 도움이 λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 방법은 λˆ„κ΅¬λ‚˜ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ±΄κ°•ν•œ 삢을 μ‚΄κΈ° μœ„ν•œ λ‹€λ₯Έ 방법은 μ—†μ„κΉŒμš”? 그것은 당신이 κ°€μž₯ λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” μ–΄λ–€ 것을 μΆ”κ΅¬ν•˜λŠ” 것 μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ§Œμ•½ 당신이 λ„ˆλ¬΄ 많이 λ¨ΉλŠ”λ‹€κ³  μƒκ°ν•œλ‹€λ©΄, 당신은 μ‹μ‚¬λŸ‰μ„ μ€„μ΄λŠ” 것이 도움이 될 κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ—°μŠ΅μ€ λ˜ν•œ λ‹Ήμ‹ μ˜ 기뢄을 더 μ’‹κ²Œ ν•΄μ€λ‹ˆλ‹€. μ΄λ ‡κ²Œ λ‹Ήμ‹ μ˜ 기뢄이 μ•„μ£Ό μ’‹μ•„μ§ˆ λ•Œ 당신은 κ±΄κ°•ν•œ 삢을 μ‚΄κ³  μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ 것이 μΈμƒμ—μ„œ κ°€μž₯ λ§Œμ‘±κ°μ„ μ£ΌλŠ” 방식이며, λ˜ν•œ κ±΄κ°•ν•˜κ²Œ μ‚¬λŠ” λ°©λ²•μž…λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ 건강과 행볡을 μœ μ§€ν•˜λŠ” μ€‘μš”ν•œ λ‹¨κ³„λŠ” μ–΄λ–€ 것이 μžˆμŠ΅λ‹ˆκΉŒ? μ΄λŸ¬ν•œ 것을 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ λ‹€μŒ μ§ˆλ¬Έμ— λŒ€ν•΄ 생각해 λ³΄μ‹­μ‹œμ˜€. 그리고 λ‚˜μ„œ 그것듀을 적고 λͺ©λ‘μ„ λ§Œλ“€μ–΄ λ³΄μ‹­μ‹œμ˜€. 이 과정은 무엇을 μƒκ°ν•˜κ³ `
# %%
gen('μŠˆμΉ΄μ›”λ“œκ°€ λ¬΄μ—‡μΈκ°€μš”?')
# %% [markdown]
# `### 질문: μŠˆμΉ΄μ›”λ“œκ°€ λ¬΄μ—‡μΈκ°€μš”?`
# 
# `### λ‹΅λ³€: μŠˆμΉ΄μ›”λ“œλŠ” 유튜브 채널이며, λ‹€μ–‘ν•œ 경제 λΆ„μ•Όμ˜ 주제λ₯Ό 닀루고 μžˆμŠ΅λ‹ˆλ‹€. κ²½μ œλΆ„μ•Όμ— 관심이 μžˆμœΌμ‹  뢄듀은 ν•œλ²ˆμ―€μ€ 듀어보셨을 채널일 κ²ƒμž…λ‹ˆλ‹€. μŠˆμΉ΄μ›”λ“œλΌλŠ” 이름은 μŠˆμΉ΄λ‹˜μ˜ ꡭ적과도 관련이 μžˆλŠ”λ°μš”, μŠ€μœ„μŠ€λΌλŠ” κ΅­λͺ…μ˜ '슈카'와 μ±„λ„μ˜ 이름을 λ”°μ„œ μŠˆμΉ΄μ›”λ“œλΌκ³  지은 κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. ν˜„μž¬λŠ” λ‹€μ–‘ν•œ λΆ„μ•Όλ₯Ό 닀루고 있으며, μ—¬λŸ¬κ°€μ§€ μ΄μŠˆλ‚˜ 경제 κ΄€λ ¨ λ‚΄μš©μ΄ 주둜 μ˜¬λΌμ˜€μ§€λ§Œ, κ΅¬λ…μž μ—¬λŸ¬λΆ„λ“€μ΄ μ›ν•˜λŠ” μ½˜ν…μΈ κ°€ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ…”μ„œ 채널에 λ°˜μ˜ν•˜λŠ” λ“±, μ‹œμ²­μžμ˜ μ·¨ν–₯에 따라 λ‹€μ–‘ν•œ μ½˜ν…μΈ  μ—…λ°μ΄νŠΈ 및 μ—…λ‘œλ“œκ°€ 이루어지고 μžˆμŠ΅λ‹ˆλ‹€. οΏ½ 인쀀: μŠˆμΉ΄μ›”λ“œλŠ” ν˜„μž¬ κ΅¬λ…μžμˆ˜ 120만 λͺ… 이상(!), μ‘°νšŒμˆ˜λŠ” 6600만 λ·° 이상을 κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ΅¬λ…μžμ™€ 쑰회수의 μ°¨μ΄λŠ” 컨텐츠λ₯Ό μ–Όλ§ˆλ‚˜ μ¦κ²¨λ³΄λŠ”μ§€μ™€ 관계가 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. μŠˆμΉ΄μ›”λ“œλŠ” κ²½μ œκ΄€λ ¨ λ‚΄μš© 이외에도, μ—¬ν–‰, μ •μΉ˜, λ¬Έν™”, 역사, 슀포츠, 상식, 정보, μ‹œμ‚¬ λ“± λ‹€μ–‘ν•œ 뢄야에 λŒ€ν•œ 상식, 정보λ₯Ό 닀루고 μžˆλŠ” μ±„λ„μž…λ‹ˆλ‹€. λ”°λΌμ„œ, μŠˆμΉ΄μ›”λ“œλ₯Ό κ΅¬λ…ν•œ λ§Žμ€ 뢄듀은`
# 
# %%
gen('곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ 방법은?')
# %% [markdown]
# `### 질문: 곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ 방법은?`
# 
# `### λ‹΅λ³€: 곡곡성을 μΈ‘μ •ν•˜κΈ°μœ„ν•œ λͺ‡ 가지 방법 쀑 ν•˜λ‚˜λŠ” κ³΅κ³΅κΈ°κ΄€μ˜ μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš©μ„ μΈ‘μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ A/B ν…ŒμŠ€νŠΈκ°€ μ‚¬μš©λ©λ‹ˆλ‹€. 이 방법은 청ꡬ λΉ„μš©μ΄ 평균 κ°’ A보닀 클경우 A의 μ‚¬μš©μ„ μš”κ΅¬ν•˜κ³ , 청ꡬ λΉ„μš©μ΄ 평균 κ°’ A보닀 μž‘λ‹€λ©΄ B의 μ‚¬μš©μ„ μš”κ΅¬ν•©λ‹ˆλ‹€. 곡곡 κΈ°κ΄€μ˜ μ‹€μ œ λΉ„μš©μ„ μΈ‘μ •ν•΄ 곡곡성을 μΈ‘μ •ν•˜λŠ” λ‹€λ₯Έ λ°©λ²•μ—λŠ” μ •λΆ€μ—μ„œ μ§€λΆˆν•˜λŠ” μž¬μ • μ˜ˆμ‚°μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λΉ„μš©μ€ μž¬μ •μ  μ§€μΆœκ³Ό κ΄€λ ¨ν•œ 정보λ₯Ό κ³΅κ°œν•˜λŠ” 것이 μ μ ˆν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ •λ³΄λŠ” λ˜ν•œ 곡곡 μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš© μΈ‘μ •μ—μ„œλ„ λ™μΌν•˜κ²Œ 적용될 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해, κ³΅κ³΅κΈ°κ΄€μ˜ 곡곡성이 츑정될 수 μžˆμŠ΅λ‹ˆλ‹€.### 질문: νŠΉμ • 곡곡 μ„œλΉ„μŠ€μ— λŒ€ν•œ 청ꡬ λΉ„μš©μ΄ μ μ ˆν•œ κ²½μš°λŠ”?AIST### λ‹΅λ³€: μ •λΆ€μ—μ„œ μ§€λΆˆν•˜λŠ” μž¬μ •μ  μ§€λΆˆ 정보 κ³΅κ°œκ°€ κ³΅κ³΅κΈ°κ΄€μ˜ 곡곡성이 무엇인지λ₯Ό μΈ‘μ •ν•˜λŠ” 경우, μ΄λŸ¬ν•œ 정보가 κ³΅κ³΅κΈ°κ΄€μ—μ„œ μ„œλΉ„μŠ€λ₯Ό 받은 ν›„ κ³ κ°μ—κ²Œ 청ꡬ 된 총 κΈˆμ•‘μ΄μ–΄μ•Όν•©λ‹ˆλ‹€. λ§Œμ•½, μ§€λΆˆ κΈˆμ•‘μ„ μ„œλΉ„μŠ€ λΉ„μš©κ³Ό 같은 κ°œλ…μœΌλ‘œ μ΄ν•΄ν•œλ‹€λ©΄, κ³΅κ³΅κΈ°κ΄€μ˜ λ‹€λ₯Έ μ„œλΉ„μŠ€ λΉ„μš© λ˜ν•œ 청ꡬ λΉ„μš©μœΌλ‘œ μΈ‘μ •`
# %%
gen('주식 μ‹œμž₯μ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈ° μœ„ν•œ 방법은?')
# %% [markdown]
# `### 질문: 주식 μ‹œμž₯μ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈ° μœ„ν•œ 방법은?`
# 
# `### λ‹΅λ³€: μ£Όμ‹μ‹œμž₯은 변동성이 λ†’μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 변동성이 λ†’μŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μˆ˜μ΅μ„ μ–»μœΌλ €λ©΄ μž₯기적으둜 λ΄μ•Όν•˜κ³ , κΈ°μ—…μ˜ 미래 κ°€μΉ˜λ₯Ό λΆ„μ„ν•˜κ³  νˆ¬μžν•΄μ•Ό ν•©λ‹ˆλ‹€. κΈ°μ—…μ˜ 주식을 샀닀면 κ·Έ κΈ°μ—…μ˜ 미래 κ°€μΉ˜κ°€ μ’‹μ•„μ•Ό ν•˜κ³  μ„±μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·Έλž˜μ•Ό κΎΈμ€€νžˆ 높은 μ£Όκ°€ μƒμŠΉμ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, λ‹¨κΈ°κ°„μ˜ μˆ˜μ΅μ„ μ–»κΈΈ μ›ν•œλ‹€λ©΄ λ‹€λ₯Έ 방법을 κΆŒν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 이유둜 주식 투자λ₯Ό ν•˜λŠ” λ§Žμ€ κ°œμΈλ“€μ€ λ‹¨νƒ€μ˜ ν˜•νƒœλ₯Ό λ³΄μž…λ‹ˆλ‹€. λ‹¨νƒ€λŠ” λ‹¨κΈ°μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κ³  λΉ μ Έλ‚˜μ˜€λŠ” 방법을 μ˜λ―Έν•©λ‹ˆλ‹€. 주식을 사고 일정 기간이 μ§€λ‚˜μ§€ μ•Šμ•˜μŒμ—λ„ μžμ‹ μ˜ 수읡이 났닀면 κ·Έ μˆ˜μ΅κΈˆμ„ μ±™κΈ°κ³  λ‚˜μ˜€λŠ” ν˜•νƒœμž…λ‹ˆλ‹€. λ‹¨νƒ€λŠ” 변동성이 높은 주식 μ‹œμž₯μ—μ„œ 비ꡐ적 짧은 κΈ°κ°„ λ™μ•ˆ μˆ˜μ΅μ„ 보고 λ‚˜μ˜€λŠ” λ°©λ²•μž…λ‹ˆλ‹€. κΈ°μ—…μ—μ„œ κΎΈμ€€νžˆ μˆ˜μ΅μ„ λ‚΄λŠ” 것보닀 훨씬 μ‰¬μš΄ 만큼 λ¦¬μŠ€ν¬κ°€ 큰 λ°©λ²•μž…λ‹ˆλ‹€. λ•Œλ¬Έμ— 개인이 주식 νˆ¬μžμ—μ„œ μ•ˆμ •μ μœΌλ‘œ μˆ˜μ΅μ„ μ–»κΈΈ μ›ν•˜μ‹ λ‹€λ©΄ μž₯기적으둜 투자λ₯Ό ν•˜μ‹œλŠ” 것을 κΆŒν•©λ‹ˆλ‹€. κΎΈμ€€ν•œ μˆ˜μ΅μ„ λ‚΄κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜λŠ” 기업을 μ°ΎμœΌμ‹œκ³  ν•¨κ»˜ μ„±μž₯ν•˜λ©΄ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ…Έλ ₯은 μ‹œκ°„μ΄ κ±Έλ¦½λ‹ˆλ‹€. 단, 기간적인 λΆ€λΆ„μ—μ„œ μ‹œκ°„μ΄ 였래 걸릴`
# 
# %%
gen('ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?')
# %% [markdown]
# `### 질문: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?`
# 
# `### λ‹΅λ³€: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ 차이점은, μš°μ„  λ‘˜ λ‹€ 금육 μ‹œμž₯μ—μ„œ κ±°λž˜κ°€ κ°€λŠ₯ν•œ νŒŒμƒμƒν’ˆμ΄λ©° 이 μ˜΅μ…˜λ“€μ€ 거래 방법이 λ‹€λ¦…λ‹ˆλ‹€. 주식을 μ‚¬κ³ νŒŒλŠ” μ£Όμ‹κ±°λž˜μ™€ 달리, 이 μƒν’ˆμ€ λ‹Ήμ‚¬μž 사이에 계약을 톡해 κ±°λž˜ν•˜κ²Œ λ©λ‹ˆλ‹€. λ˜ν•œ, 주식과 달리, 두 μ˜΅μ…˜μƒν’ˆ λͺ¨λ‘ μ‹œμž₯ 상황에 λ”°λ₯Έ κ°€κ²©μ˜ μƒμŠΉκ³Ό ν•˜λ½μ— 영ν–₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 두 μ˜΅μ…˜μ˜ 차이점과 더 μ€‘μš”ν•œ 차이점은, μ˜΅μ…˜μ€ 거래 κΈˆμ•‘μ΄ κ³ μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 즉, μ£Όμ‹κ±°λž˜μ™€ 같이 κ³„μ•½ν•œ κΈˆμ•‘μ— κ³ μ •λœ κΈˆμ•‘μœΌλ‘œ κ±°λž˜ν•˜λŠ” 것이 μ•„λ‹ˆλΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€. μ΄λŠ” μ£Όκ°€κ°€ κΈ‰λ³€ν•  μˆ˜λ„, 가격 변동 폭이 맀우 클 μˆ˜λ„ μžˆλŠ” μƒν™©μ—μ„œ 주식 κ±°λž˜μ™€ μ˜΅μ…˜ 거래λ₯Ό λΉ„κ΅ν–ˆμ„ λ•Œ, μ˜΅μ…˜ κ±°λž˜κ°€ 훨씬 더 μœ„ν—˜ν•œ μ΄μœ μ΄κΈ°λ„ ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 일반 개미 νˆ¬μžμžλŠ” μ£Όμ‹κ±°λž˜λ‚˜ μ„ λ¬Ό κ±°λž˜μ™€ 같이 μΌμ •ν•œ κΈˆμ•‘μ΄ κ³ μ •λ˜μ–΄ κ±°λž˜λ˜λŠ”, μ•ˆμ •μ„±μ΄ 더 큰 일반적인 μ£Όμ‹κ±°λž˜λ₯Ό ν•©λ‹ˆλ‹€. 일반 개미 νˆ¬μžμžκ°€ μ΄λŸ¬ν•œ μ£Όμ‹κ±°λž˜μ˜ 일쒅인 μ„ λ¬Όκ³Ό μ£Όμ‹κ±°λž˜μ˜ 일쒅인 μ˜΅μ…˜κ±°λž˜μ—μ„œ 선택해야 ν•˜λŠ” ν¬μ§€μ…˜μ€, μš°μ„  μ„ λ¬Όκ±°λž˜λŠ” μ„ λ¬Ό 맀도 ν¬μ§€μ…˜ (μžμ‹ μ˜ 보유 주식을 μ„ λ¬Ό 맀도 계약에 ν¬ν•¨ν•˜μ—¬ 보유`
# 
# %%
gen('ν’‹μ˜΅μ…˜ 맀도와 μ½œμ˜΅μ…˜ 맀수의 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?')
# %% [markdown]
# `### 질문: ν’‹μ˜΅μ…˜ 맀도와 μ½œμ˜΅μ…˜ 맀수의 차이, 그리고 일반 개미 νˆ¬μžμžκ°€ 선택해야 ν•  ν¬μ§€μ…˜μ€?`
# 
# `### λ‹΅λ³€: ν’‹μ˜΅μ…˜κ³Ό μ½œμ˜΅μ…˜μ˜ λ§€μˆ˜μ™€ 맀도 ν¬μ§€μ…˜μ˜ μ •μ˜λ₯Ό λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. ν’‹μ˜΅μ…˜μ΄λž€ 'ν’‹'μ΄λž€ νŒλ§€ν•˜λŠ” μ‚¬λžŒμ΄ νŒŒλŠ” κΈˆμ•‘μ„ μ˜λ―Έν•˜κ³ , 'μ˜΅μ…˜'μ΄λž€ 선택 사항을 μ˜λ―Έν•©λ‹ˆλ‹€. 즉, ν’‹μ˜΅μ…˜μ€ 'ν’‹'이라고 ν‘œκΈ°λ₯Ό ν•΄μ•Ό ν•˜κ³ , 선택 사항이 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ˜΅μ…˜μ€ 주가에 λŒ€ν•΄μ„œ ν–‰μ‚¬ν•˜λŠ” ꢌ리λ₯Ό λΆ€μ—¬ν•˜λŠ” κ²ƒμœΌλ‘œ, μ΄λŸ¬ν•œ μ˜΅μ…˜μ„ μ„ νƒν•˜μ˜€μ„ λ•ŒλŠ” ν•΄λ‹Ή 주식과 같은 λ°©ν–₯으둜 λ§€λ„ν•˜λŠ” 것과 κ΅¬λ§€ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ, μ£Όκ°€κ°€ ν•˜λ½ν•  κ²ƒμ΄λΌλŠ” κΈ°λŒ€κ°€ μžˆλ‹€λ©΄, μ΄λŸ¬ν•œ μ˜ˆμƒμœΌλ‘œ μΈν•˜μ—¬ μ£Όκ°€κ°€ λ–¨μ–΄μ§ˆ 것이기 λ•Œλ¬Έμ— 일반 맀도 ν¬μ§€μ…˜μœΌλ‘œ μ£Όκ°€μ˜ ν•˜λ½μ— μ°Έκ°€ν•˜λŠ” 것이 λ‚«μ§€λ§Œ, μ£Όκ°€κ°€ ν•˜λ½ν•  λ•Œ ν•΄λ‹Ή 주식을 일정 λΆ€λΆ„ μƒμŠΉμ˜ λ°©ν–₯으둜, λ˜λŠ” μƒμŠΉμ˜ ν­λ§ŒνΌμ„ 보μž₯λ°›κ³  μ‹Άλ‹€λ©΄, μ΄λŸ¬ν•œ μ˜΅μ…˜μ„ μ„ νƒν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉, μ˜΅μ…˜μ—μ„œ μ£Όκ°€κ°€ μƒμŠΉμ„ ν•  λ•ŒλŠ” μ½œμ˜΅μ…˜μœΌλ‘œ μ„ νƒν•˜λŠ” 것이고, μ£Όκ°€κ°€ ν•˜λ½ν•˜κ²Œ 될 λ•ŒλŠ” ν’‹μ˜΅μ…˜μ„ μ„ νƒν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 선택을 ν•  경우, 일반적으둜 μ£Όκ°€μ˜ ν•˜λ½μ— λŒ€ν•΄μ„œ μƒμŠΉμ˜ λ°©ν–₯으둜 μƒμŠΉν­`
# 
# %%
gen("λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ κ°€ 뭐야? 그리고 μ–΄λ–»κ²Œ ν•΄μ•Ό λ§ˆμ§„μ½œμ„ 막을 수 μžˆμ–΄?")
# %% [markdown]
# `### 질문: λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ κ°€ 뭐야? 그리고 μ–΄λ–»κ²Œ ν•΄μ•Ό λ§ˆμ§„μ½œμ„ 막을 수 μžˆμ–΄?`
# 
# `### λ‹΅λ³€: λ§ˆμ§„μ½œμ΄ λ°œμƒν•˜λŠ” μ΄μœ λŠ” 은행이 κ³ κ°μ—κ²Œ μ§€κΈ‰ν•˜κ³ μž ν•˜λŠ” κΈˆμ•‘μ΄ λ°œμƒν•œ κΈˆμ•‘λ³΄λ‹€ λ§Žμ€ 경우, μΆ”κ°€λ‘œ λ‚΄μ•Ό ν•˜λŠ” κΈˆμ•‘μ„ κ³„μ‚°ν•΄μ„œ κ³„μ’Œμ—μ„œ 더 λ§Žμ€ κΈˆμ•‘μ„ μΈμΆœν•˜κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ 되면, κ³„μ’Œλ₯Ό κ΄€λ¦¬ν•˜λŠ” 은행 μž…μž₯μ—μ„œλŠ” κ³„μ’Œμ—μ„œ μΆ”κ°€λ‘œ κΊΌλ‚΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, μ€ν–‰μ˜ 신뒰도가 λ•…μœΌλ‘œ 떨어지고, κ³„μ’Œλ₯Ό μ‚¬μš©ν•˜λŠ” 은행 고객도 μΆ”κ°€λ‘œ λ‚΄μ•Ό ν•˜λŠ” κΈˆμ•‘μ— λŒ€ν•œ λΆˆμ•ˆκ°μ„ λŠλ‚„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이런 λΆˆμ•ˆκ°μ— λŒ€ν•΄ 잘 λ³΄μ—¬μ£ΌλŠ” 사둀가 μ˜ν™” λ§ˆμ§„μ½œμž…λ‹ˆλ‹€. λ”°λΌμ„œ, 이런 ν˜„μƒμ„ 막기 μœ„ν•΄μ„œλŠ” κ³ κ°μ—κ²Œ λ¨Όμ € 지급할 κΈˆμ•‘κ³Ό μΈμΆœν•˜λŠ” κΈˆμ•‘μ„ μ •ν™•ν•˜κ²Œ νŒŒμ•…ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.`
# 
# 
# %% [markdown]
# ## λͺ¨λΈ μ €μž₯ & μ—…λ‘œλ“œ
# %%
!huggingface-cli login
# %%
# model.push_to_hub('beomi/fft-koalpaca-gemma2-9b-50step')
# μ•„λž˜ 아이디 뢀뢄을 μˆ˜μ •ν•΄μ„œ μ“°μ„Έμš”.
model.push_to_hub('ν—ˆκΉ…νŽ˜μ΄μŠ€μ•„μ΄λ””/fft-koalpaca-gemma2-9b-50step')
# %% [markdown]
# - μœ„ μ˜ˆμ‹œμ½”λ“œλŠ” https://huggingface.co/beomi/qlora-koalpaca-polyglot-12.8b-50step 에 μ˜¬λΌκ°‘λ‹ˆλ‹€. μ‚¬μš©ν•˜μ‹œλŠ”