Skip to content

Commit b14eb76

Browse files
Merge pull request #134 from MervinPraison/develop
Develop
2 parents c201712 + 6498fcf commit b14eb76

File tree

12 files changed

+170
-52
lines changed

12 files changed

+170
-52
lines changed

.praisonignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ cookbooks
22
tests
33
docs
44
praisonai/ui/*
5-
praisonai/inbuilt_tools/*
6-
praisonai/inc/*
5+
praisonai/inbuilt_tools/*

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM python:3.11-slim
22
WORKDIR /app
33
COPY . .
4-
RUN pip install flask praisonai==0.0.59rc9 gunicorn markdown
4+
RUN pip install flask praisonai==0.0.59rc11 gunicorn markdown
55
EXPOSE 8080
66
CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]

config.yaml

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
1+
ollama_save: "false"
2+
huggingface_save: "false"
3+
train: "false"
4+
15
model_name: "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit"
26
hf_model_name: "mervinpraison/llama-3.1-tamilan-8B-test"
7+
ollama_model: "mervinpraison/llama3.1-tamilan-test"
8+
model_parameters: "8b"
9+
10+
dataset:
11+
- name: "yahma/alpaca-cleaned"
12+
split_type: "train"
13+
processing_func: "format_prompts"
14+
rename:
15+
input: "input"
16+
output: "output"
17+
instruction: "instruction"
18+
filter_data: false
19+
filter_column_value: "id"
20+
filter_value: "alpaca"
21+
num_samples: 20000
22+
23+
dataset_text_field: "text"
24+
dataset_num_proc: 2
25+
packing: false
26+
327
max_seq_length: 2048
428
load_in_4bit: true
529
lora_r: 16
@@ -19,23 +43,6 @@ random_state: 3407
1943
use_rslora: false
2044
loftq_config: null
2145

22-
dataset:
23-
- name: "yahma/alpaca-cleaned"
24-
split_type: "train"
25-
processing_func: "format_prompts"
26-
rename:
27-
input: "input"
28-
output: "output"
29-
instruction: "instruction"
30-
filter_data: false
31-
filter_column_value: "id"
32-
filter_value: "alpaca"
33-
num_samples: 20000
34-
35-
dataset_text_field: "text"
36-
dataset_num_proc: 2
37-
packing: false
38-
3946
per_device_train_batch_size: 2
4047
gradient_accumulation_steps: 2
4148
warmup_steps: 5
@@ -50,7 +57,4 @@ seed: 3407
5057
output_dir: "outputs"
5158

5259
quantization_method:
53-
- "q4_k_m"
54-
55-
ollama_model: "llama3.1-tamilan-test"
56-
model_parameters: "8b"
60+
- "q4_k_m"

docs/api/praisonai/deploy.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ <h2 id="raises">Raises</h2>
110110
file.write(&#34;FROM python:3.11-slim\n&#34;)
111111
file.write(&#34;WORKDIR /app\n&#34;)
112112
file.write(&#34;COPY . .\n&#34;)
113-
file.write(&#34;RUN pip install flask praisonai==0.0.59rc9 gunicorn markdown\n&#34;)
113+
file.write(&#34;RUN pip install flask praisonai==0.0.59rc11 gunicorn markdown\n&#34;)
114114
file.write(&#34;EXPOSE 8080\n&#34;)
115115
file.write(&#39;CMD [&#34;gunicorn&#34;, &#34;-b&#34;, &#34;0.0.0.0:8080&#34;, &#34;api:app&#34;]\n&#39;)
116116

praisonai.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ class Praisonai < Formula
33

44
desc "AI tools for various AI applications"
55
homepage "https://github.com/MervinPraison/PraisonAI"
6-
url "https://github.com/MervinPraison/PraisonAI/archive/refs/tags/0.0.59rc9.tar.gz"
6+
url "https://github.com/MervinPraison/PraisonAI/archive/refs/tags/0.0.59rc11.tar.gz"
77
sha256 "1828fb9227d10f991522c3f24f061943a254b667196b40b1a3e4a54a8d30ce32" # Replace with actual SHA256 checksum
88
license "MIT"
99

praisonai/cli.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from .auto import AutoGenerator
1313
from .agents_generator import AgentsGenerator
1414
from .inbuilt_tools import *
15+
from .inc.config import generate_config
1516
import shutil
1617
import subprocess
1718
import logging
@@ -130,17 +131,20 @@ def main(self):
130131

131132
if args.agent_file == 'train':
132133
package_root = os.path.dirname(os.path.abspath(__file__))
133-
config_yaml_source = os.path.join(package_root, 'setup', 'config.yaml')
134134
config_yaml_destination = os.path.join(os.getcwd(), 'config.yaml')
135135

136-
if not os.path.exists(config_yaml_destination):
137-
try:
138-
shutil.copyfile(config_yaml_source, config_yaml_destination)
139-
print("config.yaml copied to the current directory.")
140-
except FileExistsError:
141-
print("config.yaml already exists in the current directory. Skipping copy.")
142-
else:
143-
print("config.yaml already exists in the current directory. Skipping copy.")
136+
# Generate config.yaml using the function
137+
config = generate_config(
138+
model_name=args.model,
139+
hf_model_name=args.hf,
140+
ollama_model_name=args.ollama,
141+
dataset=[{
142+
"name": args.dataset
143+
}]
144+
)
145+
with open('config.yaml', 'w') as f:
146+
yaml.dump(config, f, default_flow_style=False, indent=2)
147+
144148

145149
if 'init' in sys.argv:
146150
from praisonai.setup.setup_conda_env import main as setup_conda_main
@@ -150,12 +154,12 @@ def main(self):
150154

151155
try:
152156
result = subprocess.check_output(['conda', 'env', 'list'])
153-
if 'prasion_env' in result.decode('utf-8'):
154-
print("Conda environment 'prasion_env' found.")
157+
if 'praison_env' in result.decode('utf-8'):
158+
print("Conda environment 'praison_env' found.")
155159
else:
156160
raise subprocess.CalledProcessError(1, 'grep')
157161
except subprocess.CalledProcessError:
158-
print("Conda environment 'prasion_env' not found. Setting it up...")
162+
print("Conda environment 'praison_env' not found. Setting it up...")
159163
from praisonai.setup.setup_conda_env import main as setup_conda_main
160164
setup_conda_main()
161165
print("All packages installed.")
@@ -167,7 +171,7 @@ def main(self):
167171
env = os.environ.copy()
168172
env['PYTHONUNBUFFERED'] = '1'
169173

170-
stream_subprocess(['conda', 'run', '--no-capture-output', '--name', 'prasion_env', 'python', '-u', train_script_path, 'train'] + train_args, env=env)
174+
stream_subprocess(['conda', 'run', '--no-capture-output', '--name', 'praison_env', 'python', '-u', train_script_path, 'train'] + train_args, env=env)
171175
return
172176

173177
invocation_cmd = "praisonai"
@@ -240,7 +244,11 @@ def parse_args(self):
240244
parser.add_argument("--auto", nargs=argparse.REMAINDER, help="Enable auto mode and pass arguments for it")
241245
parser.add_argument("--init", nargs=argparse.REMAINDER, help="Enable auto mode and pass arguments for it")
242246
parser.add_argument("agent_file", nargs="?", help="Specify the agent file")
243-
parser.add_argument("--deploy", action="store_true", help="Deploy the application") # New argument
247+
parser.add_argument("--deploy", action="store_true", help="Deploy the application")
248+
parser.add_argument("--model", type=str, help="Model name")
249+
parser.add_argument("--hf", type=str, help="Hugging Face model name")
250+
parser.add_argument("--ollama", type=str, help="Ollama model name")
251+
parser.add_argument("--dataset", type=str, help="Dataset name for training", default="yahma/alpaca-cleaned")
244252
args, unknown_args = parser.parse_known_args()
245253

246254
if unknown_args and unknown_args[0] == '-b' and unknown_args[1] == 'api:app':

praisonai/deploy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def create_dockerfile(self):
5656
file.write("FROM python:3.11-slim\n")
5757
file.write("WORKDIR /app\n")
5858
file.write("COPY . .\n")
59-
file.write("RUN pip install flask praisonai==0.0.59rc9 gunicorn markdown\n")
59+
file.write("RUN pip install flask praisonai==0.0.59rc11 gunicorn markdown\n")
6060
file.write("EXPOSE 8080\n")
6161
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
6262

praisonai/inc/config.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
def generate_config(
2+
ollama_save=None,
3+
huggingface_save=None,
4+
train=None,
5+
model_name=None,
6+
hf_model_name=None,
7+
ollama_model_name=None,
8+
model_parameters=None,
9+
max_seq_length=None,
10+
load_in_4bit=None,
11+
lora_r=None,
12+
lora_target_modules=None,
13+
lora_alpha=None,
14+
lora_dropout=None,
15+
lora_bias=None,
16+
use_gradient_checkpointing=None,
17+
random_state=None,
18+
use_rslora=None,
19+
loftq_config=None,
20+
dataset=None,
21+
dataset_text_field=None,
22+
dataset_num_proc=None,
23+
packing=None,
24+
per_device_train_batch_size=None,
25+
gradient_accumulation_steps=None,
26+
warmup_steps=None,
27+
num_train_epochs=None,
28+
max_steps=None,
29+
learning_rate=None,
30+
logging_steps=None,
31+
optim=None,
32+
weight_decay=None,
33+
lr_scheduler_type=None,
34+
seed=None,
35+
output_dir=None,
36+
quantization_method=None
37+
):
38+
"""Generates the configuration for PraisonAI with dynamic overrides."""
39+
40+
config = {
41+
"ollama_save": ollama_save or "false",
42+
"huggingface_save": huggingface_save or "false",
43+
"train": train or "false",
44+
45+
"model_name": model_name or "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit",
46+
"hf_model_name": hf_model_name or "mervinpraison/llama-3.1-tamilan-8B-test",
47+
"ollama_model": ollama_model_name or "mervinpraison/llama3.1-tamilan-test",
48+
"model_parameters": model_parameters or "8b",
49+
50+
"dataset": dataset or [
51+
{
52+
"name": "yahma/alpaca-cleaned",
53+
"split_type": "train",
54+
"processing_func": "format_prompts",
55+
"rename": {"input": "input", "output": "output", "instruction": "instruction"},
56+
"filter_data": False,
57+
"filter_column_value": "id",
58+
"filter_value": "alpaca",
59+
"num_samples": 20000
60+
}
61+
],
62+
63+
"dataset_text_field": dataset_text_field or "text",
64+
"dataset_num_proc": dataset_num_proc or 2,
65+
"packing": packing or False,
66+
67+
"max_seq_length": max_seq_length or 2048,
68+
"load_in_4bit": load_in_4bit or True,
69+
"lora_r": lora_r or 16,
70+
"lora_target_modules": lora_target_modules or [
71+
"q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"
72+
],
73+
"lora_alpha": lora_alpha or 16,
74+
"lora_dropout": lora_dropout or 0,
75+
"lora_bias": lora_bias or "none",
76+
"use_gradient_checkpointing": use_gradient_checkpointing or "unsloth",
77+
"random_state": random_state or 3407,
78+
"use_rslora": use_rslora or False,
79+
"loftq_config": loftq_config or None,
80+
81+
"per_device_train_batch_size": per_device_train_batch_size or 2,
82+
"gradient_accumulation_steps": gradient_accumulation_steps or 2,
83+
"warmup_steps": warmup_steps or 5,
84+
"num_train_epochs": num_train_epochs or 1,
85+
"max_steps": max_steps or 10,
86+
"learning_rate": learning_rate or 2.0e-4,
87+
"logging_steps": logging_steps or 1,
88+
"optim": optim or "adamw_8bit",
89+
"weight_decay": weight_decay or 0.01,
90+
"lr_scheduler_type": lr_scheduler_type or "linear",
91+
"seed": seed or 3407,
92+
"output_dir": output_dir or "outputs",
93+
94+
"quantization_method": quantization_method or ["q4_k_m"]
95+
}
96+
return config

praisonai/setup/config.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
ollama_save: "true"
2+
huggingface_save: "true"
3+
train: "true"
4+
15
model_name: "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit"
26
hf_model_name: "mervinpraison/llama-3.1-tamilan-8B-test"
7+
ollama_model: "mervinpraison/llama3.1-tamilan-test"
8+
model_parameters: "8b"
9+
310
max_seq_length: 2048
411
load_in_4bit: true
512
lora_r: 16
@@ -50,7 +57,4 @@ seed: 3407
5057
output_dir: "outputs"
5158

5259
quantization_method:
53-
- "q4_k_m"
54-
55-
ollama_model: "llama3.1-tamilan-test"
56-
model_parameters: "8b"
60+
- "q4_k_m"

praisonai/setup/setup_conda_env.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ else
3333
fi
3434

3535
# Create and activate the Conda environment
36-
ENV_NAME="prasion_env"
36+
ENV_NAME="praison_env"
3737
if conda info --envs | grep -q $ENV_NAME; then
3838
echo "Environment $ENV_NAME already exists. Recreating..."
3939
conda env remove -y -n $ENV_NAME # Remove existing environment

0 commit comments

Comments
 (0)