parent
d8e949ec7c
commit
bd02305efb
@ -0,0 +1,140 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Cook vllm - sglang - test eval script\n",
|
||||||
|
"## OpenAI API for reference\n",
|
||||||
|
"- https://platform.openai.com/docs/api-reference/completions/create\n",
|
||||||
|
"- https://platform.openai.com/docs/api-reference/completions/create"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Cook vllm\n",
|
||||||
|
"- https://docs.vllm.ai/en/latest/getting_started/examples/gradio_webserver.html\n",
|
||||||
|
"- https://docs.vllm.ai/en/latest/getting_started/examples/gradio_openai_chatbot_webserver.html\n",
|
||||||
|
"- https://docs.vllm.ai/en/latest/getting_started/examples/basic.html#gguf"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"!vllm serve meta-llama/Llama-3.2-1B-Instruct --dtype auto"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Cook sglang\n",
|
||||||
|
"- https://docs.sglang.ai/backend/server_arguments.html\n",
|
||||||
|
"- > lora_paths: You may provide a list of adapters to your model as a list. Each batch element will get model response with the corresponding lora adapter applied. Currently cuda_graph and radix_attention are not supported with this option so you need to disable them manually. We are still working on through these issues.\n",
|
||||||
|
"- > To enable multi-GPU data parallelism, add --dp 2. Data parallelism is better for throughput if there is enough memory."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# %pip install \"sglang[all]>=0.4.5\" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python -q\n",
|
||||||
|
"!python3 -m sglang.launch_server --model-path meta-llama/Llama-3.2-1B-Instruct --dp 2 --port 30000"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import requests\n",
|
||||||
|
"\n",
|
||||||
|
"url = f\"http://localhost:30000/v1/chat/completions\"\n",
|
||||||
|
"\n",
|
||||||
|
"data = {\n",
|
||||||
|
" \"model\": \"meta-llama/Llama-3.2-1B-Instruct\",\n",
|
||||||
|
" \"messages\": [{\"role\": \"user\", \"content\": \"Hello em an com chua?\"}],\n",
|
||||||
|
"}\n",
|
||||||
|
"\n",
|
||||||
|
"response = requests.post(url, json=data)\n",
|
||||||
|
"print(response.json())"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Cook eval script"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Command to launch SGLang server\n",
|
||||||
|
"!python3 -m sglang.launch_server \\\n",
|
||||||
|
" --model-path \"janhq/250404-llama-3.2-3b-instruct-grpo-03-s250\" \\\n",
|
||||||
|
" --context-length 8192 \\\n",
|
||||||
|
" --enable-metrics \\\n",
|
||||||
|
" --dtype bfloat16 \\\n",
|
||||||
|
" --host 0.0.0.0 \\\n",
|
||||||
|
" --port 8002 \\\n",
|
||||||
|
" --trust-remote-code \\\n",
|
||||||
|
" --disable-overlap \\\n",
|
||||||
|
" --disable-radix-cache"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# cd scripts/evaluation\n",
|
||||||
|
"!python run_eval.py \\\n",
|
||||||
|
" --config_path eval_config.yaml \\\n",
|
||||||
|
" --method_name research \\\n",
|
||||||
|
" --data_dir {root/path/to/evaluation/data} \\\n",
|
||||||
|
" --dataset_name bamboogle \\\n",
|
||||||
|
" --split test \\\n",
|
||||||
|
" --save_dir {your-save-dir} \\\n",
|
||||||
|
" --save_note research_qwen7b_ins\n",
|
||||||
|
" --sgl_remote_url {your-launched-sgl-url} \\\n",
|
||||||
|
" --remote_retriever_url {your-hosted-retriever-url} \\\n",
|
||||||
|
" --generator_model {your-local-model-path} \\\n",
|
||||||
|
" --apply_chat True"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "deepsearch-py311",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.11.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Getting Familiar\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.gradio.app/guides/agents-and-tool-usage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import gradio as gr\n",
|
||||||
|
"\n",
|
||||||
|
"with gr.Blocks() as demo:\n",
|
||||||
|
" chatbot = gr.Chatbot(\n",
|
||||||
|
" type=\"messages\",\n",
|
||||||
|
" value=[\n",
|
||||||
|
" gr.ChatMessage(role=\"user\", content=\"What is the weather in San Francisco?\"),\n",
|
||||||
|
" gr.ChatMessage(\n",
|
||||||
|
" role=\"assistant\", content=\"I need to use the weather API tool?\", metadata={\"title\": \"🧠 Thinking\"}\n",
|
||||||
|
" ),\n",
|
||||||
|
" ],\n",
|
||||||
|
" )\n",
|
||||||
|
"\n",
|
||||||
|
"demo.launch()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import gradio as gr\n",
|
||||||
|
"from transformers import Tool, ReactCodeAgent # type: ignore\n",
|
||||||
|
"from transformers.agents import stream_to_gradio, HfApiEngine # type: ignore\n",
|
||||||
|
"\n",
|
||||||
|
"# Import tool from Hub\n",
|
||||||
|
"image_generation_tool = Tool.from_space(\n",
|
||||||
|
" space_id=\"black-forest-labs/FLUX.1-schnell\",\n",
|
||||||
|
" name=\"image_generator\",\n",
|
||||||
|
" description=\"Generates an image following your prompt. Returns a PIL Image.\",\n",
|
||||||
|
" api_name=\"/infer\",\n",
|
||||||
|
")\n",
|
||||||
|
"\n",
|
||||||
|
"llm_engine = HfApiEngine(\"Qwen/Qwen2.5-Coder-32B-Instruct\")\n",
|
||||||
|
"# Initialize the agent with both tools and engine\n",
|
||||||
|
"agent = ReactCodeAgent(tools=[image_generation_tool], llm_engine=llm_engine)\n",
|
||||||
|
"\n",
|
||||||
|
"def interact_with_agent(prompt, history):\n",
|
||||||
|
" messages = []\n",
|
||||||
|
" yield messages\n",
|
||||||
|
" for msg in stream_to_gradio(agent, prompt):\n",
|
||||||
|
" messages.append(asdict(msg))\n",
|
||||||
|
" yield messages\n",
|
||||||
|
" yield messages\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"demo = gr.ChatInterface(\n",
|
||||||
|
" interact_with_agent,\n",
|
||||||
|
" chatbot= gr.Chatbot(\n",
|
||||||
|
" label=\"Agent\",\n",
|
||||||
|
" type=\"messages\",\n",
|
||||||
|
" avatar_images=(\n",
|
||||||
|
" None,\n",
|
||||||
|
" \"https://em-content.zobj.net/source/twitter/53/robot-face_1f916.png\",\n",
|
||||||
|
" ),\n",
|
||||||
|
" ),\n",
|
||||||
|
" examples=[\n",
|
||||||
|
" [\"Generate an image of an astronaut riding an alligator\"],\n",
|
||||||
|
" [\"I am writing a children's book for my daughter. Can you help me with some illustrations?\"],\n",
|
||||||
|
" ],\n",
|
||||||
|
" type=\"messages\",\n",
|
||||||
|
")\n",
|
||||||
|
"\n",
|
||||||
|
"demo.launch()"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "deepsearch-py311-2",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.11.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Cook Search APIs\n",
|
||||||
|
"- This notebook is used to cook search APIs like Tavily and Serper."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import http.client\n",
|
||||||
|
"import json\n",
|
||||||
|
"import os\n",
|
||||||
|
"\n",
|
||||||
|
"from dotenv import load_dotenv\n",
|
||||||
|
"\n",
|
||||||
|
"load_dotenv(override=True)\n",
|
||||||
|
"\n",
|
||||||
|
"# https://docs.spaceserp.com/serp-api\n",
|
||||||
|
"conn = http.client.HTTPSConnection(\"google.serper.dev\")\n",
|
||||||
|
"payload = json.dumps({\"q\": \"apple inc\"})\n",
|
||||||
|
"headers = {\n",
|
||||||
|
" \"X-API-KEY\": os.getenv(\"SERPER_API_KEY\"),\n",
|
||||||
|
" \"Content-Type\": \"application/json\",\n",
|
||||||
|
"}\n",
|
||||||
|
"conn.request(\"POST\", \"/search\", payload, headers)\n",
|
||||||
|
"res = conn.getresponse()\n",
|
||||||
|
"data = res.read()\n",
|
||||||
|
"print(data.decode(\"utf-8\"))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import os\n",
|
||||||
|
"\n",
|
||||||
|
"from dotenv import load_dotenv\n",
|
||||||
|
"from tavily import TavilyClient\n",
|
||||||
|
"\n",
|
||||||
|
"load_dotenv(override=True)\n",
|
||||||
|
"\n",
|
||||||
|
"tavily_client = TavilyClient(api_key=os.getenv(\"TAVILY_API_KEY\"))\n",
|
||||||
|
"# https://docs.tavily.com/documentation/api-reference/endpoint/search\n",
|
||||||
|
"response = tavily_client.search(\n",
|
||||||
|
" query=\"Who is Leo Messi?\",\n",
|
||||||
|
" search_depth=\"basic\",\n",
|
||||||
|
" topic=\"general\",\n",
|
||||||
|
" max_results=2,\n",
|
||||||
|
" include_answer=True,\n",
|
||||||
|
" include_raw_content=False,\n",
|
||||||
|
" include_images=False,\n",
|
||||||
|
")\n",
|
||||||
|
"\n",
|
||||||
|
"print(response)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "deepsearch-py311-2",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"name": "python",
|
||||||
|
"version": "3.11.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
Loading…
Reference in new issue