Найден годный конспект по LLM на русском языке
Авторы реально постарались, потому что раскрыто буквально все, что нужно, чтобы понять принцип работы современных моделей. Что внутри, если кратко:
– Необходимая математика: линал и матанализ на пальцах
– Все про механизм внимания и трансформеры
– Детальное объяснение процесса предобучения
– RL – с нуля до обучения ризонинг-моделей типа o3
– И даже полноценный гайд по тому, как самостоятельно зафайнтюнить модель.
Все – в иллюстрациях, схемах и интуитивно понятных примерах. Для наглядности прикладываю несколько страниц.
Забрать полную pdf-версию абсолютно бесплатно можно здесь
Авторы реально постарались, потому что раскрыто буквально все, что нужно, чтобы понять принцип работы современных моделей. Что внутри, если кратко:
– Необходимая математика: линал и матанализ на пальцах
– Все про механизм внимания и трансформеры
– Детальное объяснение процесса предобучения
– RL – с нуля до обучения ризонинг-моделей типа o3
– И даже полноценный гайд по тому, как самостоятельно зафайнтюнить модель.
Все – в иллюстрациях, схемах и интуитивно понятных примерах. Для наглядности прикладываю несколько страниц.
Забрать полную pdf-версию абсолютно бесплатно можно здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструмент делает запрос к ExchangeRate API и показывает актуальный курс USD к RUB — без заморочек и регистрации.
import requests
from typing import Optional
def get_exchange_rate(base_currency: str, target_currency: str) -> Optional[float]:
"""
Получает курс обмена из base_currency в target_currency.
:param base_currency: Базовая валюта (например, 'USD').
:param target_currency: Целевая валюта (например, 'RUB').
:return: Курс обмена или None в случае ошибки.
"""
url = f"https://open.er-api.com/v6/latest/{base_currency}"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
rate = data["rates"].get(target_currency)
if rate is None:
print(f"Курс для {target_currency} не найден.")
return None
return rate
except requests.RequestException as e:
print(f"Ошибка при запросе к API: {e}")
return None
if __name__ == "__main__":
base = "USD"
target = "RUB"
rate = get_exchange_rate(base, target)
if rate:
print(f"Курс {base} к {target}: {rate}")
else:
print("Не удалось получить курс обмена.")
# Курс USD к RUB: 80.926191
#python #code #soft
Please open Telegram to view this post
VIEW IN TELEGRAM
Backend Talks от Яндекс 360
Смотрите записи докладов с митапа от Яндекс 360 для бэкенд-разработчиков, архитекторов и DevOps-инженеров.
На пути к 9999: Игорь Обручев, руководитель группы SRE, рассказал, какими принципами команда руководствуется при создании сервисов, как без паники чинят инциденты и как в этом помогают учения.
Эволюция проектирования общих решений в Яндекс 360: Евгений Ширанков, руководитель команды платформенных сервисов, рассказал про подходы и лайфхаки, которые помогли выдержать рост команды и оставаться в контексте создания общих решений, не переизобретая велосипеды.
Ценности и культура команды: Роман Акинфеев, руководитель бэкенд-разработки, рассказал, почему культура и ценности являются важнейшими активами команды, которые сложно создать и поддерживать, но легко потерять в период взрывного роста.
Больше материалов о технологиях в Яндекс 360
@yandex360team
Смотрите записи докладов с митапа от Яндекс 360 для бэкенд-разработчиков, архитекторов и DevOps-инженеров.
На пути к 9999: Игорь Обручев, руководитель группы SRE, рассказал, какими принципами команда руководствуется при создании сервисов, как без паники чинят инциденты и как в этом помогают учения.
Эволюция проектирования общих решений в Яндекс 360: Евгений Ширанков, руководитель команды платформенных сервисов, рассказал про подходы и лайфхаки, которые помогли выдержать рост команды и оставаться в контексте создания общих решений, не переизобретая велосипеды.
Ценности и культура команды: Роман Акинфеев, руководитель бэкенд-разработки, рассказал, почему культура и ценности являются важнейшими активами команды, которые сложно создать и поддерживать, но легко потерять в период взрывного роста.
Больше материалов о технологиях в Яндекс 360
@yandex360team
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Python PDF Handling Tutorial — интересная подборка скриптов для работы с PDF-файлами в Python:
Вы научитесь:
Пример извлечения текста:
from io import StringIO
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
# PDFMiner Analyzers
rsrcmgr = PDFResourceManager()
sio = StringIO()
codec = "utf-8"
laparams = LAParams()
device = TextConverter(rsrcmgr, sio, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
# path to our input file
pdf_file = "sample.pdf"
# Extract text
pdfFile = open(pdf_file, "rb")
for page in PDFPage.get_pages(pdfFile):
interpreter.process_page(page)
pdfFile.close()
# Return text from StringIO
text = sio.getvalue()
print(text)
# Freeing Up
device.close()
sio.close()
Пример извлечения изображений:
import fitz
import io
from PIL import Image
# path to our input file
pdf_file = "sample.pdf"
# Input PDF file
pdf_file = fitz.open(pdf_file)
for page_no in range(len(pdf_file)):
curr_page = pdf_file[page_no]
images = curr_page.getImageList()
for image_no, image in enumerate(curr_page.getImageList()):
# get the XREF of the image
xref = image[0]
# extract the image bytes
curr_image = pdf_file.extractImage(xref)
img_bytes = curr_image["image"]
# get the image extension
img_extension = curr_image["ext"]
# load it to PIL
image = Image.open(io.BytesIO(img_bytes))
# save it to local disk
image.save(open(f"page{page_no+1}_img{image_no}.{img_extension}", "wb"))
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый год компании выпускают более современные гаджеты. С потоком новых продуктов растет и спрос на сильных разработчиков ПО. На hh.ru активно 40 000+ вакансий, средняя зарплата специалиста — 200 000 ₽.
Освойте перспективную профессию на практике в онлайн-магистратуре «Разработка программного обеспечения» от Skillfactory и МИФИ. Это та же магистратура, только занятия проходят онлайн в удобное время.
Два года будете учиться у лучших педагогов вуза и экспертов из VK, Huawei. Отточите навыки и наберетесь опыта на хакатонах. Сможете пользоваться теми же бонусами и льготами, что и при очном обучении. Получите диплом престижного вуза и продолжите развиваться в бэкенд-. Освоите разработку на Java-, Go- или Python-.
Чтобы поступить, нужен диплом о высшем образовании или студенческий билет последних курсов вуза. Набор в магистратуру уже идет. Количество мест ограничено.
Оставляйте заявку по ссылке
Реклама. ООО "СКИЛФЭКТОРИ". ИНН 9702009530. erid: 2W5zFGqJ8zL
Освойте перспективную профессию на практике в онлайн-магистратуре «Разработка программного обеспечения» от Skillfactory и МИФИ. Это та же магистратура, только занятия проходят онлайн в удобное время.
Два года будете учиться у лучших педагогов вуза и экспертов из VK, Huawei. Отточите навыки и наберетесь опыта на хакатонах. Сможете пользоваться теми же бонусами и льготами, что и при очном обучении. Получите диплом престижного вуза и продолжите развиваться в бэкенд-. Освоите разработку на Java-, Go- или Python-.
Чтобы поступить, нужен диплом о высшем образовании или студенческий билет последних курсов вуза. Набор в магистратуру уже идет. Количество мест ограничено.
Оставляйте заявку по ссылке
Реклама. ООО "СКИЛФЭКТОРИ". ИНН 9702009530. erid: 2W5zFGqJ8zL
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Python — не только про скрипты и автоматизацию. Он умеет работать сразу с несколькими задачами параллельно — и делать это красиво. Но тут есть нюансы: GIL, multiprocessing, asyncio... разберём всё!
* Процессы (multiprocessing) — как отдельные контейнеры. Изолированы, не делят память. Каждый процесс может использовать своё ядро процессора. Идеально для вычислений.
* Потоки (threading) — живут в одном процессе и делят между собой память. Отлично справляются с задачами, связанными с вводом/выводом (например, скачивание файлов).
* Асинхронность (asyncio) — не параллельность в классическом смысле. Всё работает в одном потоке, но задачи переключаются между собой, не блокируя выполнение. Лучший выбор для работы с сетью.
GIL — глобальная блокировка интерпретатора в Python. Она позволяет одновременно выполняться только одному потоку Python-кода, даже если у тебя 64 ядра. Почему так? Потому что управление памятью в CPython не потокобезопасно.
multiprocessing
> Идеален для тяжёлых вычислений на нескольких ядрах.
*
Process
— запуск нового процесса*
Pool
— пул воркеров*
Queue
, Pipe
— обмен данными*
Manager
— разделение объектов между процессами*
Lock
, Semaphore
— синхронизация*
cpu_count()
— сколько у тебя вообще ядер?threading
> Для I/O задач, где важна отзывчивость: загрузка веб-страниц, параллельный логинг и т.д.
*
Thread
— запуск нового потока*
Timer
, Event
, Barrier
— управление временем и синхронизацией*
enumerate()
, current_thread()
— управление потокамиasyncio
> Современный подход: запуск кучи задач внутри одного потока.
*
async
/ await
— ключевые слова*
asyncio.run()
, asyncio.gather()
— запуск корутин* Поддержка библиотек:
*
aiohttp
— запросы к сайтам*
aiofiles
— работа с файламиRace condition (состояние гонки) — когда два потока одновременно хотят изменить одну и ту же переменную. Кто первый встал — того и тапки. Итог: баги, которых потом не найдёшь.
Потокобезопасность достигается через:
*
Lock
, RLock
* Локальные данные потока (
threading.local()
)Асинхронная программа:
* запускает задачу;
* пока ждёт ответа — делает что-то ещё;
* возвращается к задаче, когда пришёл ответ.
Пример:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
return await resp.text()
async def main():
html = await fetch('https://example.com')
print(html)
asyncio.run(main())
🔧 Сравнение подходов:
📌 multiprocessing
• Параллельность: ✅
• Делит память: ❌
• Для чего: тяжёлые CPU-задачи
📌 threading
• Параллельность: ❌ (из-за GIL)
• Делит память: ✅
• Для чего: задачи с вводом/выводом (I/O)
📌 asyncio
• Параллельность: ❌
• Делит память: ✅
• Для чего: сетевые и файловые задачи
* Нужна мощь ядра? —
multiprocessing
* Много сетевых вызовов и ожиданий? —
asyncio
* Быстрая и простая многозадачность? —
threading
* GIL — особенность Python, но не приговор
@python2day
#doc #python #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM